Comunidad Gambas-es
Empaquetando un directorio - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Linux (https://gambas-es.org/forumdisplay.php?fid=9)
+--- Foro: Programación en otros lenguajes (https://gambas-es.org/forumdisplay.php?fid=12)
+---- Foro: Bash (https://gambas-es.org/forumdisplay.php?fid=13)
+---- Tema: Empaquetando un directorio (/showthread.php?tid=225)



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
  1. 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í.

Bash
  1. find . | wc -l



El resultado es entre directorios y archivos: 89612

Para listar el contenido de un archivo tar en este caso puedo hacer esto:

Bash
  1. tar tvf  programacion.tar



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
  1. 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:

Bash
  1. find . -type f | wc -l



Me da: 68665

Contar solo los tipo directorios:

Bash
  1. find . -type d | wc -l



Me da: 20922

Total directorios y archivos: 68665 + 20922 = 89587

Que tampoco tiene que ver con: 89612

Se come 25... Huh

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
  1. tar tvf programacion.tar | grep "^d" | wc -l



Ale que es tarde y casi es fin de año.. en que cosas me distraigo. Big Grin

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
  1. #!/bin/bash
  2.  
  3. for argumento in directorio{1..3}
  4. do
  5.     mkdir $argumento
  6.     cd $argumento
  7.     for argumento2 in archivo{1..5}
  8.     do
  9.         touch $argumento2
  10.     done
  11.     cd ..
  12. 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.

Bash
  1. tar dvf ejemplo.tar


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