tar: Cómo crear un archivo tar con directorios iniciales arbitrarios sin 'cd'ing al directorio padre


23

Digamos que tengo un directorio de archivos en

/home/user1/dir1

y quiero crear un tar con solo "dir1" como el directorio principal:

/dir1/file1
/dir1/file2

Sé que primero puedo cd al directorio

cd /home/user1/
tar czvf dir1.tar.gz dir1

Pero al escribir scripts, saltar de un directorio a otro no siempre es favorable. Me pregunto si hay una manera de hacerlo con rutas absolutas sin cambiar los directorios actuales.

Sé que siempre puedo crear un archivo tar con rutas absolutas DENTRO y usar

--strip-components 

al extraer, pero a veces los nombres de ruta adicionales son información privada adicional que no desea distribuir con sus archivos tar.

¡Gracias!

Respuestas:


24

tar -C cambia el directorio

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

por cierto, uno práctico para realizar un seguimiento de los cambios de directorios ... use pushd y popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
Gracias. No sabía que la opción "-C" debía usarse antes que otras opciones ... Intenté "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" antes pero no funcionó.
Yan

1
No funciona: tar: dir: No se puede generar estadística: No existe tal archivo o directorio (suponiendo que dir1 está en / home / user1 /)
tribbloid

21

Con gnu tar, puede crear un archivo con un directorio base diferente al actual con:

tar -c --transform 's,^\.,mybasedir,' .

Simplemente adapte la expresión sed a sus necesidades.


5

OK, también descubrí que

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

También funcionó como yo quería.


Aunque los comodines como "*" no funcionan
Curtis Yallop

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.