2010-10-27 14 views
6

In pratica, desidero solo tarare tutti i file in una directory, ma non ottenere tutte le directory madri nell'archivio.Impedire che le directory madri vengano catapizzate

Ho provato -C, ma suppongo che non lo sto usando bene.

tar -cjf archive.tar.bz2 -C /var/some/log/path ./* 

Questo risulta in tar che tenta di aggiungere tutti i file nel CWD. L'utilizzo del percorso completo come ultimo argomento non impedisce l'aggiunta delle directory.

Sembra abbastanza semplice, ma non riesco a capirlo. In qualche modo tar non tar ./* come relativo a -C, anche se dovrebbe cambiare in quella directory.

Aiuto apprezzato.

+0

È la shell che espande './*' in un elenco di nomi di file. 'tar' vede solo questa lista di nomi di file. – Gilles

risposta

11

La directory principale (/var/some/log) è inclusa, dal momento che lo è incluso nel numero /var/some/log/path/... Prova solo facendo

tar -cjf archive.tar.bz2 -C /var/some/log/path . 

Prova di funzionamento:

$ find tmp/some_files 
tmp/some_files 
tmp/some_files/dir1 
tmp/some_files/dir1/dir1file 
tmp/some_files/hello 
tmp/some_files/world 
tmp/some_files/dir2 
tmp/some_files/dir2/dir2file 
$ tar -cvjf archive.tar.bz2 -C tmp/some_files/ . 
./ 
./dir1/ 
./dir1/dir1file 
./hello 
./world 
./dir2/ 
./dir2/dir2file 
$ cd tmp/unpacked 
/tmp/unpacked$ mv /home/aioobe/archive.tar.bz2 . 
/tmp/unpacked$ tar -xvjf archive.tar.bz2 
./ 
./dir1/ 
./dir1/dir1file 
./hello 
./world 
./dir2/ 
./dir2/dir2file 
/tmp/unpacked$ ls 
archive.tar.bz2 dir1 dir2 hello world 
/tmp/unpacked$ 
+0

Questo è un po 'meglio, ma ora annunci "." come directory principale nel tar. Voglio solo i file. – Joe

+0

No, il prefisso "./" è solo una notazione. Contiene i file nella "radice" dell'archivio. – aioobe

+0

Ah. Io vedo. Colpa mia. – Joe

0

C'è un modo molto semplice per fare questo:

  1. cd fino alla directory che si desidera essere di livello superiore, vale a dire.

    cd /var/lib/mysql

  2. directory Rimuovere genitore dal vostro comando tar

    /var/lib/mysql/DATABASE_NAME diventa solo DATABASE_NAME

Maggiori dettagli possono essere trovati in this blog writeup.

Problemi correlati