¿Cómo crear un archivo tar en un directorio diferente?

39

Quiero crear un archivo tar en un directorio diferente en lugar del directorio actual.

Intenté este comando:

tar czf file.tar.gz file1 -C /var/www/

pero crea el archivo en el directorio actual. ¿Por qué?

Omid
fuente
3
Parece haber entendido mal el significado de -C(que no es extraño, ya que está documentado vagamente). Para más detalles, consulte serverfault.com/q/416002/86283 .
NN

Respuestas:

48

La forma más fácil, si no necesita usar particularmente -Cpara indicarle tarque cambie a otro directorio, es simplemente especificar la ruta completa al archivo en la línea de comando. Entonces puede estar en el directorio que prefiera para crear la estructura de directorios que desee dentro del archivo.

Lo siguiente creará el archivo /var/www/file.tar.gzy lo colocará file1desde el directorio actual (lo que sea que esté) en él, sin información de ruta en el archivo.

tar czf /var/www/file.tar.gz file1

La ruta (al archivo, a los archivos constituyentes o a ambos), por supuesto, también puede ser relativa. Si file1está dentro /tmp, estás dentro /var/spooly quieres crear el archivo /var/www, puedes usar algo como:

tar czf ../www/file1.tar.gz /tmp/file1

Hay un millón de variaciones sobre el tema, pero esto debería ayudarlo a comenzar. Agregue la vbandera si desea ver lo que tarrealmente hace.

un CVn
fuente
1
También podría usar una ruta relativa.
NN
@NN Absolutamente, pero como no tenemos idea de qué $PWDes, parecía más seguro usar una ruta absoluta en el ejemplo.
un CVn
De hecho, pensé que tenía sentido incluir eso para mostrar que es una opción disponible para resolver el problema.
NN
De esa manera, la ruta file1en el archivo tar será /tmp. Esto puede o no ser lo que espera.
mouviciel
8

Convierto los datos comprimidos en una secuencia (-) y renombro y ubico fácilmente (>) siempre que elijo (También siempre tar la ruta relativa (./) para que sea más fácil tratar cuando se descomprime)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
David King
fuente
Eso no ayuda con archivos individuales, y -Ces mucho más idiomático (y más corto).
Mahmoud Al-Qudsi
3

Creo que debería ser:
tar czf file.tar.gz -C /var/www/ file1

Lo que funciona para mi. Le dice que cambie de directorio y luego elija el archivo.

usuario2039152
fuente
-2

Funcionó perfectamente

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
Myhera
fuente