Empaquetando un directorio -
Shell - 31-12-2020
Buenas!.
Quiero empaquetar el directorio "programación" por completo y crear el archivo en un directorio concreto. No necesito comprimirlo.
He usado esto:
Bash
tar cvf /media/mi_usuario/directorio_destino/programacion.tar Programacion
¿ Cómo puedo asegurarme de que el archivo tar creado contiene "todo" el contenido del directorio Programación ?.
Si quiero contar archivos y directorios del directorio Programación, se puede hacer así.
El resultado es entre directorios y archivos:
89612
Para listar el contenido de un archivo tar en este caso puedo hacer esto:
Como la lista de archivo se muestra sin líneas vacías al igual que hace el comando find. Para contar cada una de las líneas que muestra la instrucción anterior puedo hacer:
Bash
tar tvf programacion.tar | wc -l
Pero observo que me cuenta:
89606
Hay una diferencia de "seis". ¿ A que puede ser debido ?. ¿ Es una forma correcta ?.
Saludos
Puedo contar los tipos por separados del directorio Programación:
Contar solo los tipo archivos:
Me da:
68665
Contar solo los tipo directorios:
Me da:
20922
Total directorios y archivos:
68665 + 20922 = 89587
Que tampoco tiene que ver con:
89612
Se come 25...
En cuanto a si quiero saber cuantos directorios me muestra la salida del tar con las opciones tvf.
Me muestra el mismo número de directorios usando:
Bash
tar tvf programacion.tar | grep "^d" | wc -l
Ale que es tarde y casi es fin de año.. en que cosas me distraigo.
Saludos
RE: Empaquetando un directorio -
Shell - 01-01-2021
Buenas!.
He creado un script de prueba que crea tres directorios y luego en cada directorio crea cinco archivos vacíos
Bash
#!/bin/bash
for argumento in directorio{1..3}
do
mkdir $argumento
cd $argumento
for argumento2 in archivo{1..5}
do
touch $argumento2
done
cd ..
done
En el comando tar existe un modificador tal como este:
Cita:-d, --diff, --compare encuentra las diferencias entre un archivo y el sistema de ficheros
Creo un archivo empaquetado con la estructura de árbol de directorios y archivos creados con el script anterior. Y ahora comparo de esta forma
en el mismo directorio.
Si en los archivos del sistema del directorio1 borro el archivo1 y comparo con el tar. La salida es como esta:
Cita:directorio1/
directorio1/archivo5
directorio1/archivo2
directorio1/archivo3
directorio1/archivo4
directorio1/archivo1
tar: directorio1/archivo1: Atención: No se puede efectuar stat: No existe el archivo o el directorio
directorio2/
directorio2/archivo5
directorio2/archivo2
directorio2/archivo3
directorio2/archivo4
directorio2/archivo1
directorio3/
directorio3/archivo5
directorio3/archivo2
directorio3/archivo3
directorio3/archivo4
directorio3/archivo1
Si por un casual se me ocurre crear de nuevo archivo1 en el sistema de archivos y vuelvo a comparar puede decirme algo como esto:
Cita:directorio1/archivo1: La fecha de modificación es distinta
Pero lo curioso del tema es que si me da por borrar archivos
dentro del tar y comparar con los archivos del sistema, no muestra un mensaje como los anteriores.
En ese caso puede existir en el directorio de archivos del sistema, pero no existir dentro del propio archivo tar.
Si me da por crear en los archivos del sistema del directorio1 un archivo6, tampoco dice nada al comparar con el archivo tar.
Como si solo trabajase con lo que hay dentro del tar.
Cuando se compara los archivos del sistema con el tar con normalidad. Si todo va bien al final del test no suelta ni un Ok.
Solo la lista de archivos.
Saludos