Básicamente este script, graba los archivos utilizando el dd, junto a eso genera lo que se llama "Header" (que será grabado junto con el archivo deseado en un medio removible o extraible), que identifica el nombre y tamaño del archivo en cuestion. (en sus primeros 30 byte), para cuando volvamos a copiar el archivo de vuelta para el HD (por ejemplo) podamos saber exactamente el punto en que el archivo se encuentra en el pendrive. (estamos trabajando en la ausencia de un FS).
Un punto interesante de grabar archivos de esta manera, es que sólo los que están en posesión de NTN (y saber que el pendrive posee archivos), podra extraer desde alli, al final ninguna S.O. podra montar la unidad.
El script en si permite la grabación de un único archivo, si comprimimos los archivos en uno podemos colocar la canitdad que necesitamos.
El código en si es simple de entender.
Las criticas que puedan realizar, ayudan a mejorar mi conocimiento
Un punto interesante de grabar archivos de esta manera, es que sólo los que están en posesión de NTN (y saber que el pendrive posee archivos), podra extraer desde alli, al final ninguna S.O. podra montar la unidad.
El script en si permite la grabación de un único archivo, si comprimimos los archivos en uno podemos colocar la canitdad que necesitamos.
El código en si es simple de entender.
#!/bin/bash
clear
echo "------------------------------------------------"
echo "Grabar archivos sin sistema de archivos"
echo "------------------------------------------------"
echo "################################################"
echo "# No utilice el disco duro como destino #"
echo "# para el almacenamiento utilizar un pendrive #"
echo "# asegurese de realizar un backup. #"
echo "# #"
echo "################################################"
echo ""
function grabar()
{
echo ""
echo "Escriba el nombre del archivo:"
read arq2
while [ ${#arq2} -gt 17 ]
do
echo "Nombre muy largo, por favor renombre por uno mas corto!"
read arq2
done
echo "Escriba la ruta de destino:"
read destino
echo ""
echo "Creando header..."
echo $(du -b $arq2 | cut -f1 -s) > .htmp
tamanho=$(wc -m .htmp | cut -d' ' -f1)
tamanho=$((10-$tamanho));
#Creación del campo tamaño
rm .h 2&>/dev/null
while [ $tamanho -gt 0 ]
do
echo -n "0" >> .h
tamanho=$(($tamanho-1));
done
cat .htmp >> .h
rm .htmp
#Creación del campo nombre archivo
echo "" >> .h
tamanho=$((17-${#arq2}));
while [ $tamanho -gt 0 ]
do
echo -en "0" >> .h
tamanho=$(($tamanho-1));
done
echo -en "t" >> .h
echo $arq2 >> .h
#Grabando en el dispositivo
echo ""
echo "------------------------"
echo "Grabando header..."
dd status=noxfer conv=notrunc if=./.h of=$destino 2>/dev/null
echo ""
echo "Grabando archivo..."
dd status=noxfer conv=notrunc if=./$arq2 of=$destino bs=1 obs=1 seek=30 2>/dev/null
echo "------------------------"
rm .h
}
function ler()
{
echo ""
echo "Escriba la ruta del dispositivo:"
read origen
echo ""
echo "------------------------"
echo "Leyendo header..."
dd status=noxfer if=$origen of=.h bs=1 count=30 2>/dev/null
echo ""
echo "Grabando archivo..."
dd status=noxfer if=$origen of=$(tail -n1 .h | cut -f2 -s) bs=1 ibs=1 skip=30 count=$(head -n1 .h) 2>/dev/null
echo "------------------------"
rm .h
}
function crear_archivo()
{
echo ""
echo "Cual archivo sera generado? i.e: 1K/2K... 1M/10M..."
read opt
echo ""
echo "Generando archivo..."
dd status=noxfer if=/dev/zero of=arq.bin bs=$opt count=1 2>/dev/null
}
echo "Desea crear un archivo para almacenamiento(S/N) ?"
read opt
if [ $opt == 'S' ]
then
crear_archivo
fi
echo ""
echo "Desea leer(1) o escribir(2)?"
read opt
if [ $opt -eq 1 ]
then
ler
else
if [ $opt -eq 2 ]
then
grabar
fi
fi
Las criticas que puedan realizar, ayudan a mejorar mi conocimiento

