Ho questa riga molto semplice in uno script bash che viene eseguito correttamente (ovvero producendo il _data.tar
file), tranne per il fatto che non esclude le sottodirectory che gli viene detto di escludere tramite l' --exclude
opzione:
/bin/tar -cf /home/_data.tar --exclude='/data/sub1/*' --exclude='/data/sub2/*' --exclude='/data/sub3/*' --exclude='/data/sub4/*' --exclude='/data/sub5/*' /data
Invece, produce un _data.tar
file che contiene tutto in / dati, inclusi i file nelle sottodirectory che volevo escludere.
Qualche idea sul perché? e come risolvere questo?
Aggiornamento Ho implementato le mie osservazioni in base al link fornito nella prima risposta di seguito (dir di primo livello, senza spazi vuoti dopo l'ultima esclusione):
/bin/tar -cf /home/_data.tar /data --exclude='/data/sub1/*' --exclude='/data/sub2/*' --exclude='/data/sub3/*' --exclude='/data/sub4/*' --exclude='/data/sub5/*'
Ma questo non ha aiutato. Tutte le sottodirectory "escluse" sono presenti nel _data.tar
file risultante .
Questo è sconcertante. Che si tratti di un bug nel tar corrente (GNU tar 1.23, su CentOS 6.2, Linux 2.6.32) o "estrema sensibilità" del tar verso gli spazi bianchi e altri errori di battitura facili da perdere, lo considero un bug. Per adesso.
Questo è orribile : ho provato le intuizioni suggerite di seguito (nessuna traccia /*
) e non funziona ancora nello script di produzione:
/bin/tar -cf /home/_data.tar /data --exclude='/data/sub1' --exclude='/data/sub2' --exclude='/data/sub3' --exclude='/data/sub4'
Non riesco a vedere alcuna differenza tra quello che ho provato e quello che ha provato @Richard Perrin, tranne le virgolette e 2 spazi invece di 1. Ho intenzione di provare questo (devo aspettare che lo script notturno venga eseguito come directory per il backup è enorme) e riferire.
/bin/tar -cf /home/_data.tar /data --exclude=/data/sub1 --exclude=/data/sub2 --exclude=/data/sub3 --exclude=/data/sub4
Sto cominciando a pensare che tutte queste tar --exclude
sensibilità non sono catrame ma qualcosa nel mio ambiente, ma allora cosa potrebbe essere?
Ha funzionato! L'ultima variante ha provato a funzionare (senza virgolette singole e spazio singolo anziché doppio spazio tra le --exclude
s) testato funzionante. Strano ma accettante.
Incredibile! Si scopre che una versione precedente di tar
(1.15.1) escluderebbe solo se la directory di livello superiore è l' ultima nella riga di comando. Questo è l'esatto contrario di come richiede la versione 1.23. PER TUA INFORMAZIONE.