it-swarm-es.tech

Comprimir una carpeta con tar?

Estoy tratando de comprimir una carpeta (/var/www/) a ~/www_backups/$time.tar dónde $time es la fecha actual.

Esto es lo que tengo:

cd /var/www && Sudo tar -czf ~/www_backups $time"

Estoy completamente perdido y llevo horas haciendo esto. No estoy seguro si -czf es correcto. Simplemente quiero copiar todo el contenido en /var/www en una $time.tar, y quiero mantener los permisos de archivo para todos los archivos. ¿Puede alguien ayudarme?

298
qwerty

Para tar y gzip una carpeta, la sintaxis es:

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar

Los - es opcional. Si desea tar el directorio actual, use . para designar eso.

Para construir su nombre de archivo, use la utilidad date (mire en su página de manual las opciones de formato disponibles). Por ejemplo:

cd /var/www && Sudo tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .

Esto habría creado un archivo llamado algo así como 20120902-185558.tar.gz.

En Linux, es probable que su tar también sea compatible con la compresión BZip2 con la opción j en lugar de z. Y posiblemente otros. Consulte la página del manual en su sistema local.

412
Mat

Ejemplos para los algoritmos de compresión más comunes

El título de la pregunta para esto es simplemente "¿Comprimir una carpeta con tar?" Dado que este título es muy general, pero la pregunta y la respuesta son mucho más específicas, y debido a la gran cantidad de puntos de vista que ha atraído esta pregunta, sentí que sería beneficioso agregar una lista actualizada de ejemplos de ambos archivo/compresión y extracción/descompresión, con varios algoritmos de compresión de uso común.

Estos han sido probados con Ubuntu 18.04.4. Son muy simples para uso general, pero podrían integrarse fácilmente en los contenidos de preguntas más específicos del OP utilizando las técnicas en la respuesta aceptada y los comentarios útiles anteriores.

Una cosa a tener en cuenta para el público más general es que tar no agregará las extensiones necesarias (como .tar.gz) automáticamente: el usuario tiene que agregarlos explícitamente, como se ve en los comandos a continuación:

# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball
tar cvf filename.tar *

# 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory
tar xvf filename.tar

# 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip
tar cvzf filename.tar.gz *

# 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory
tar xvf filename.tar.gz # Note: same options as 2 above

# 5: tar (create bzip2'ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2
tar cvjf filename.tar.bz2 * # Note: little 'j' in options

# 6: Untar (extract bzip2'ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory
tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above

# 7: tar (create xz'ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz
tar cvJf filename.tar.xz * # Note: capital 'J' in options

# 8: Untar (extract xz'ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory
tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above

Vea el tar página man (mejor usar man tar en su máquina específica) para más detalles. A continuación resumo las opciones utilizadas anteriormente directamente desde la página del manual:

-c, --crear
Crear un nuevo archivo

-x, --extract, --get
Extraer archivos de un archivo

-v, --verbose
Lista de archivos procesados

-z, --gzip
Filtra el archivo a través de gzip

-j, --bzip2
Filtra el archivo a través de bzip2

-J, --xz
Filtra el archivo a través de xz

-f, --file = ARCHIVO
Utilice el archivo de almacenamiento o el ARCHIVO del dispositivo

No es necesario agregar el - delante de las opciones combinadas, o el = firmar entre la opción f y el nombre del archivo.

Obtuve todo esto de mi reciente artículo , que se ampliará aún más en un artículo mucho más completo a medida que tenga tiempo para trabajar en él.

3
Xitalogy