web-dev-qa-db-fra.com

Archivage tar qui prend en entrée une liste de fichiers

J'ai un fichier contenant la liste des fichiers que je veux archiver avec tar. Appelons cela mylist.txt

Il contient:

file1.txt
file2.txt
...
file10.txt

Existe-t-il un moyen de lancer une commande TAR prenant mylist.txt en entrée? Quelque chose comme

tar -cvf allfiles.tar -[someoption?] mylist.txt

Pour que ce soit semblable à si je lance cette commande:

tar -cvf allfiles.tar file1.txt file2.txt file10.txt 
133
neversaint

Oui:

tar -cvf allfiles.tar -T mylist.txt
216
Martin York

En supposant que GNU tar (s’il s’agit de Linux), l’option -T ou --files-from est ce que vous voulez.

81
Simon Richter

Vous pouvez également diriger les noms de fichiers qui pourraient être utiles:

find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -
27
woot

Certaines versions de tar, par exemple les versions par défaut de HP-UX (j'ai testé les versions 11.11 et 11.31), n'incluent pas une option de ligne de commande permettant de spécifier une liste de fichiers. Il convient donc de contourner ce problème:

tar cvf allfiles.tar $(cat mylist.txt)
13
barush

Sous Solaris, vous pouvez utiliser l'option -I pour lire les noms de fichiers que vous auriez normalement définis sur la ligne de commande à partir d'un fichier. Contrairement à la ligne de commande, cela peut créer des archives tar contenant des centaines de milliers de fichiers (vient de le faire).

Ainsi, l'exemple se lirait

tar -cvf allfiles.tar -I mylist.txt
5
Jan

Pour moi sur AIX, cela fonctionnait comme suit:

tar -L List.txt -cvf BKP.tar
2
Cassiano Bucci