¿Comprimir una carpeta con tar?

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

Esto es lo que tengo:

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

Estoy completamente perdido y he estado en esto durante horas. No estoy seguro de si -czf es correcto. Simplemente quiero copiar todo el contenido en /var/www en un archivo $time.tar y quiero mantener los permisos de archivo para todos los archivos. ¿Alguien puede ayudarme?

Comentarios

  • necesita un " al otro lado de $time también.

Responde

Para tar y gzip una carpeta, la sintaxis es:

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar 

La - con czf es opcional.

Si desea tar el directorio actual, use . para designarlo.

Para construir nombres de archivo dinámicamente, use la utilidad date (consulte su página de manual para las opciones de formato disponibles). Por ejemplo:

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

Esto creará un archivo llamado algo así como 20120902-185558.tar.gz.

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

Comentarios

  • Esto es perfecto, gracias. Sin embargo, tengo un pequeño problema. Después de crear un archivo tar de / var / www, se coloca dentro de los directorios / var / www del archivo tar. Aquí ' s el código que ' estoy usando ahora sudo tar -czf ~/www_backups/$time.tar /var/www/" Imagina que tengo un archivo llamado test.txt dentro de / var / www. Después de hacer una copia tar del archivo, cuando lo extraiga, se colocará dentro de los directorios / var / www. ¿Tiene sentido? Espero que sí, un poco difícil de explicar. Verificaré la compatibilidad con BZip2, ¡gracias por la sugerencia!
  • Esa ' es la razón por la que primero cd directorio que desea empaquetar, luego tar cf file.tar . – ese último . en lugar de especificar la ruta completa hará que las rutas dentro del archivo sean relativas al directorio actual. También puedes usar la opción -C para tar (mira la página del manual).
  • Sí, eso funcionó mucho mejor. ¡Muchas gracias, lo agradezco!
  • @Qwertylicious -f (de la página del manual) Read the archive from or write the archive to the specified file.The filename can be - for standard input or standard output.
  • Con versiones recientes de tar, la J mayúscula (en lugar de la z) utilizará la xz compresión LZMA2.

Responder

Ejemplos de algoritmos de compresión más comunes

El título de la pregunta para esto es simplemente " Comprimir un 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 visitas que ha atraído esta pregunta, lo sentí Sería beneficioso agregar una lista actualizada de ejemplos tanto de archivo / compresión como de 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 el contenido de las preguntas más específicas del OP utilizando las técnicas en la respuesta aceptada y los útiles comentarios anteriores.

Una cosa a tener en cuenta para los más generales audiencia es que tar no agregará las extensiones necesarias (como .tar.gz) automáticamente; el usuario debe agregarlas explícitamente, como se ve en 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 

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

-c, –create
crea un nuevo archivo

-x, –extract, –get
extrae archivos de un archivo

-v, –verbose
enumera detalladamente los archivos procesados

-z, –gzip
filtra el archivo a través de gzip

-j, –bzip2
filtrar el archivo a través de bzip2

-J, –xz
filtrar el archivo a través de xz

-f, –file = ARCHIVE
usar archivo de archivo o dispositivo ARCHIVE

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *