Excluir directorio al crear un archivo .tar.gz


119

Tengo una /public_html/carpeta, en esa carpeta hay una /tmp/carpeta que tiene como 70 gb de archivos que realmente no necesito.

Ahora estoy tratando de crear una .tar.gzde /public_html/exclusión/tmp/

Este es el comando que ejecuté:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

El tar todavía se está creando, y al hacer un ls -shpuedo ver que MyBackup.tar.gzya tiene alrededor de 30gb, y estoy seguro de que /public_html/sin él /tmp/no tiene más de 1GB de archivos.

¿Qué hice mal?



la -popción no tiene ningún significado en términos de la función de creación, ¿verdad?
Martin Schneider

Respuestas:


201

Intente eliminar el último / al final de la ruta del directorio para excluir

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 

7
Para excluir la carpeta completa y su contenido: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

Me pongo tar: Error exit delayed from previous errors.en macos
prayagupd

Obteniendo un tar de error: Eliminando el `/ '
inicial

2
No funciona, tuve que usar en --exclude="/home/user/public_html/tmplugar de--exclude "/home/user/public_html/tmp
Negro

1
Ignore mi comentario anterior, que ya no puedo editar: excludeprimero debe especificarse como stackoverflow.com/users/3904223/oussaka notes. Al menos eso es lo único que funcionó para mí
kghbln

46

Intente mover el --excludeantes de la inclusión.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 

Gracias, esto funcionó para mí en una vieja caja Ubuntu 14.04 LTS.
Jamsi

1
Necesitaba hacer esto en OS X también.
TheJacobTaylor

16

Sí, elimine el final /y (al menos en ubuntu 11.04) todas las rutas proporcionadas deben ser relativas o completas. No puede mezclar rutas absolutas y relativas en el mismo comando.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

no excluirá el directorio de registros, pero

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

trabajará


1
Trabaja para mí cuando elimino la ruta absoluta en el argumento de exclusión.
jruzafa

2
El consejo sobre la mezcla de rutas absolutas y relativas fue clave para mí aquí
Dmitri DB

12

El comando correcto para excluir directorio de la compresión es:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

Asegúrese de poner --exclude antes de los elementos de origen y destino .

y puede verificar el contenido del archivo tar.gz sin descomprimir:

tar -tf backup.tar.gz

3

Prueba esto

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

2

También puede excluir más de uno usando solo uno --exclude. Como este ejemplo:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

En --exclude=debe terminar el nombre del directorio sin /y debe estar entre MyBackup.tar.gz y / home / user / public_html /

La sintaxis es:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

2

La respuesta aceptada no funcionó para mí, ejecutando unxutils tar en Windows10. En cambio, tuve que poner los archivos / directorios para archivar como último parámetro, así:

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

Entonces funcionó.


2

Esto funcionó para mí:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Probado en Ubuntu 19.10.

  1. El =después excludees opcional. Puede usar en =lugar de espacio después de la palabra clave excludesi lo desea.
  2. El parámetro excludedebe colocarse antes de la fuente.
  3. La diferencia entre usar el nombre de la carpeta (como el primero) o el * (como el segundo) es: el segundo incluirá una carpeta vacía en el paquete, pero el primero no.

-2

La opción de exclusión debe incluir el =signo y "no es obligatorio.

--exclude=/home/user/public_html/tmp

1
"es obligatorio si la carpeta tiene espacio en el nombre
Negro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.