Comprimir una carpeta (tar) sin su directorio contenedor en el nombre de la carpeta

21

Estoy tratando de comprimir una carpeta con el tarcomando.

Cuando intento comprimirlo, funciona bien. El problema es con el nombre del archivo.

Ruta de origen:

/data/file/

Ruta de destino:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

Estoy ejecutando el comando desde una carpeta diferente y, mientras extraigo la carpeta, obtengo todos los subdirectorios en lugar de la carpeta de archivos sola.

Seetha Raman
fuente
1
la sintaxis de tar es: tar zcvf file.tar.gz /path/dir/to/compresstal vez deberías cambiar tu comando tar zcvf $destinationpath $srcpathpero no me queda claro qué necesitas. ¿Podría elaborar su pregunta con un ejemplo de lo que espera del comando tar?
Lety
gracias por el comentario, mi problema es como seguir el comentario que compartió aquí "tar zcvf file.tar.gz / path / dir / to / compres" esto debería funcionar bien si estamos en el mismo "archivo" de directorio mi caso es estamos trabajando desde un directorio diferente, por ejemplo: / home / testuser1 / file: el archivo es la carpeta que quiero comprimir y estoy eliminando el comando desde la raíz que no está en casa, por lo que es posible que necesitemos dar la ruta completa a la carpeta, mientras extraemos obtengo todos los subdirectorios de / home / testuser1 / file en lugar de la carpeta de archivos
Seetha Raman
Probablemente un error tipográfico, pero en su ejemplo, confundió origen y destino.
Jacob Vlijm

Respuestas:

50

La forma más fácil de hacerlo es crear un CD en el directorio primero:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

Para que el directorio de la carpeta (que contiene) se convierta en el directorio raíz de su archivo comprimido.

Un poco más avanzado está usando la opción -C:

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

Esto crea un tar.gzarchivo en el directorio actual (de trabajo), que contiene todos los archivos / carpetas dentro foldername_tocompress(tenga en cuenta el punto, diciendo que todos los archivos / carpetas deben estar incluidos).

Jacob Vlijm
fuente
44
El punto al final de su segundo comando incluirá todos los archivos en el directorio actual ...
David Duncan