
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 -C
opción de tar
para 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 cd
en 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 --transform
que toma una sed
expresión y la ejecuta con los nombres de los archivos. Nota: tendrás que escapar /
en la sed
expresió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
.