2012-04-19 24 views
11

Ho alcune directory con alcuni fileTar: crea un archivio escludere directory tranne uno

dir_archive/somedir1 
dir_archive/somedir2 
dir_archive/somedir3 
dir_archive/mydir 
dir_archive/mydir/excludedir1 
dir_archive/mydir/excludedir2 
dir_archive/mydir/excludedir3 
dir_archive/mydir/many_other_directories... 
dir_archive/mydir/my_archive_dir 

voglio creare tar (gz) Archivio dir_archive.tar.gz con tutti i file e le directory escludo

dir_archive/mydir/excludedir1 
dir_archive/mydir/excludedir2 
dir_archive/mydir/excludedir3 
dir_archive/mydir/many_other_directories... 

ma includono

dir_archive/mydir/my_archive_dir 

non voglio usare --exclude per ogni directory

tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir/excludedir1 --exclude=dir_archive/mydir/excludedir2 --exclude=dir_archive/mydir/excludedir3 

cerco uso --add-file, ma non funziona:

tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir --add-file=dir_archive/mydir/my_archive_dir dir_archive 

esiste qualche modo semplice? Grazie

risposta

20

Un modo potrebbe essere prima esclusa la mydir e poi aggiungendo il my_archive_dir

tar cvf dir_archive.tar --exclude=dir_archive/mydir dir_archive 
tar rvf dir_archive.tar dir_archive/mydir/my_archive_dir 
gzip dir_archive.tar 

Purtroppo apposizione non funziona con gli archivi zip.

L'opzione --exclude prende un modello come argomento, quindi se i nomi dei dirs da escludere sono simili, si può evitare di loro e ancora includere il dir dell'archivio

tar cvfz dir_archive.tar.gz --exclude=dir_archive/mydir/exclude* dir_archive 

E 'anche possibile creare un file con i nomi di tutti i file che si desidera includere e assegnare l'elenco a tar con l'opzione -T o --files-from (o in un elenco di modalità simile i file da escludere e fornire l'elenco con l'opzione -X).

 
filelist.txt: 
dir_archive 
dir_archive/temp1 
dir_archive/mydir 
dir_archive/mydir/temp2 
dir_archive/mydir/my_archive_dir 
dir_archive/mydir/my_archive_dir/temp7 
tar cvfz dir_archive.tar.gz --no-recursion --files-from filelist.txt 
+0

Grazie per le risposte esaurienti – kubedan

+1

attenzione, tar mette implicitamente un '*' prima di ogni riga nell'input -X; dir_archive corrisponderà a dir_archive/dir_archive, che * potrebbe * essere un grosso problema. – rcreswick

Problemi correlati