web-dev-qa-db-fra.com

Suppression de fichiers après l'ajout à l'archive tar

Est-ce que GNU tar peut ajouter plusieurs fichiers à une archive, en les supprimant au fur et à mesure de leur ajout?

Ceci est utile lorsqu'il n'y a pas assez d'espace disque pour contenir toute l'archive tar ainsi que les fichiers d'origine.

43
Rory

Avec GNU tar, utilisez l’option option--remove-files.

60
Fred Foo

J'avais une tâche - archiver des fichiers puis supprimer dans le système d'exploitation installé "tar" sans options GNU. 

Méthode:

Utilisez "xargs" 

Supposons que nous ayons un répertoire avec des fichiers.
Vous devez déplacer tous les fichiers de la semaine dans tar et les supprimer.
Je fais une archive (arc.tar) et ajouté des fichiers à elle. (Vous pouvez créer une nouvelle archive à chaque essai) 

Solution:

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

Pour les fichiers non GNU, vous pouvez utiliser "-u" pour traiter fichier par fichier dans une boucle.

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

Je ne sais pas si vous pouvez ajouter des fichiers aux archives bzip2 sans les extraire au préalable. Cependant, voici une solution qui m'est venue à l’esprit (vous donnant l’algorithme pseudoish):

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]

Vous devriez maintenant avoir un fichier tar contenant tous les fichiers individuellement bzip2: fichiers ed. La question est de savoir combien de temps supplémentaire bzip2 ajoute aux fichiers individuels. Cela doit être testé.

0
Tobbe