Empaquete el archivo con tar.gz desde el directorio raíz

8

Intento empaquetar un archivo .csv con tar.gz, mientras estoy en el directorio raíz.

El archivo myfile.csvse encuentra en /mnt/sdb1/ Entonces, el nombre de archivo completo es/mnt/sdb1/myfile.csv

Intento guardar el tar.gz debajo /mnt/sdb1/old_files

Lo intenté así:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

Pero cuando extraigo el archivo, se extraerá una carpeta con el nombre "mnt" que contiene otra carpeta llamada "sdb1", que contiene el archivo.

¿Es posible comprimir solo el archivo, en lugar de copiar todos los directorios?

Negro
fuente

Respuestas:

12

use la --directoryopción de man tar:

-C, - -directorio DIR

cambiar al directorio DIR

es decir:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv
Fiximan
fuente
Gracias Fiximan! Esto resolvió el problema. Voy a votar en cuanto tenga 15 reputación.
Negro
3

Primero tiene que hacerlo cd /mnt/sdb1, luego inicie el tarcomando.

Para su información, no necesita usar taraquí ya que su propósito es aglomerar varios archivos en un tarball. Como solo tiene un archivo aquí, simplemente utilícelo gzip.

Dr_
fuente
Lo sé, pero tengo que hacerlo desde el directorio raíz, porque ejecuto el comando desde un script.
Negro
1
Hombre, solo agregue el cdcomando antes tar, luego puede regresar, o usarlo cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /si prefiere un cmd de línea.
McSinyx
@McSinyx El problema es que el directorio no se guarda, incluso cuando lo ejecuto cd /mnt/sdb1/, volveré a estar en el directorio raíz en la próxima ejecución de un comando. Pero su segunda solución me parece lógica, lo intento.
Negro
@McSinyx NICE! Funciona :) ¡Gracias, esto será MUY útil!
Negro
@EdwardBlack Puede ejecutar un script desde cualquier lugar, solo agregue las rutas absolutas relevantes. En general, usar rutas relativas es una mala idea, ya que puede romper las cosas fácilmente.
dr_
1

Use la -Copción para tar:

   -C Directory
        Causes the tar command to perform a chdir subroutine to the
        directory specified by the Directory variable.
Jeff Schaller
fuente