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
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, luegotar 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 laz
) 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.
$time
también.