tar: come creare un file tar con directory iniziali arbitrarie senza "cd" nella directory principale


23

Di 'che ho una directory di file su

/home/user1/dir1

e voglio creare un tar con solo "dir1" come directory principale:

/dir1/file1
/dir1/file2

So di poter prima cd nella directory

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

Ma quando si scrivono script, saltare da una directory all'altra non è sempre favorevole. Mi chiedo c'è un modo per farlo con percorsi assoluti senza cambiare le directory attuali?

So che posso sempre creare un file tar con percorsi assoluti all'interno e utilizzare

--strip-components 

durante l'estrazione, ma a volte nomi di percorsi aggiuntivi sono informazioni private extra che non si desidera distribuire con i file tar.

Grazie!

Risposte:


24

tar -C cambia directory

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

tra l'altro, utile per tenere traccia delle directory cambianti ... usa pushd e popd.

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

1
Grazie. Non sapevo che l'opzione "-C" doveva essere usata prima di altre opzioni ... Ho provato prima "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" ma non ha funzionato.
Yan

1
Non funziona: tar: dir: impossibile stat: nessun file o directory (supponendo che dir1 sia in / home / user1 /)
tribbloid

21

Con gnu tar, puoi creare un archivio con una directory di base diversa da quella effettiva con:

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

Adatta semplicemente l'espressione sed alle tue esigenze.


5

OK, l'ho anche scoperto

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

ha funzionato anche come volevo.


Sebbene i caratteri jolly come "*" non funzionino
Curtis Yallop il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.