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
Oui:
tar -cvf allfiles.tar -T mylist.txt
En supposant que GNU tar (s’il s’agit de Linux), l’option -T
ou --files-from
est ce que vous voulez.
Vous pouvez également diriger les noms de fichiers qui pourraient être utiles:
find /path/to/files -name \*.txt | tar -cvf allfiles.tar -T -
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)
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
Pour moi sur AIX, cela fonctionnait comme suit:
tar -L List.txt -cvf BKP.tar