it-swarm-eu.dev

Mazání souborů po přidání do archivu tar

Může GNU tar přidávat do archivu mnoho souborů a každý z nich smazat, jak je přidán?

To je užitečné, když na disku není dostatek místa pro uložení celého archivu tar i původních souborů.

43
Rory

Pomocí GNU tar použijte volbu --remove-files.

60
Fred Foo

Měl jsem úkol - archivovat soubory a pak odstranit do operačního systému nainstalovaný "tar" bez možností GNU. 

Metoda:

Použít "xargs" 

Předpokládejme, že máme adresář se soubory.
Potřebujete přesunout všechny soubory, přes týden do dehtu a odstranit.
Dělám jeden archiv (arc.tar) a přidávám do něj soubory. (Každý pokus můžete vytvořit nový archiv) 

Řešení:

find ./ -mtime +7 | xargs -I % sh -c 'tar -rf arc.tar % ; rm -f %'
3
Vladimir Azarov

Pro non GNU tar můžete použít "-u" pro zpracování souboru na jeden soubor ve smyčce

tar -cf archive.tar afile
for myfile in dir/*.ext
do
    tar -uf archive.tar $myfile && rm $myfile || echo "error tar -uf archive.tar $myfile"
done
1
E D

Nejsem si jistý, jestli můžete přidávat soubory do archivů bzip2, aniž byste nejprve extrahovali. Zde je ale jedno řešení, které mi přišlo na mysl (dává vám pseudoish algoritmus):

1. For each [file] in [all small files]
    1.1 compress [file] into [file].bz2
    1.2 (optionally verify the process in some way)
    1.3 delete [file]
2. For each [bzfile] in [all bzip files from step 1]
    2.1 append to tar (tar rvf compressedfiles.tar [bzfile]
    2.2 (optionally verify the process in some way)
    2.3 delete [bzfile]

Nyní byste měli mít tar soubor obsahující všechny soubory jednotlivě bzip2: ed soubory. Otázkou je, kolik režijní bzip2 přidává k jednotlivým souborům. To je třeba otestovat.

0
Tobbe