crear un archivo tar sin incluir el directorio principal

crear un archivo tar sin incluir el directorio principal

Estoy intentando crear un programa gráfico para mi script.

Dentro del script utilizo tar para crear un archivo tar.

Del programa gráfico obtengo el nombre completo del archivo que quiero crear como archivo tar.

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

Mi archivo tar incluye inicio, nombre de usuario, directorio1, directorio2 y directorio seleccionado, mientras que quiero que tar cree un archivo que solo incluya el directorio seleccionado.

Respuesta1

Puede utilizar la -Copción de tarpara lograr esto:

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

Desde la página de manual de tar:

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

Respuesta2

Hay dos métodos que puede utilizar para abordar este problema.

El primero, en mi opinión, es más fácil. Simplemente cden el directorio directamente encima del que desea comprimir. En este caso sería dir2.

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

La segunda forma es utilizar la opción --transformque toma una sedexpresión y la ejecuta con los nombres de los archivos. Nota: tendrás que escapar /en la sedexpresión.

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

Respuesta3

Primero, vaya al directorio de trabajo,

cd /your/working/directory/ 

Entonces usa magia *:-)

tar -cvf temp.tar *

Respuesta4

Para evitar ese directorio de puntos, puedes eliminarlo después del hecho:

tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz

Esto creará un archivo con solo elcontenidode /path/to/dir.

información relacionada