J'ai un fichier contenant la liste des fichiers que je souhaite archiver avec tar. Appelons ça mylist.txt
Il contient:
/path1/path2/file1.txt
/path1/path2/file3.txt
...
/path1/path2/file10.txt
Ce que je veux faire est d'archiver ce fichier dans une archive tar mais en excluant /path1/path2/
. Actuellement en faisant ceci:
tar -cvf allfiles.tar -T mylist.txt
conserve le chemin après désarchivage.
J'ai essayé mais ça ne marchera pas trop:
tar -cvf -C /path1/path2 allfiles.tar -T mylist.txt
Il archive tous les fichiers dans /path1/path2
même ceux qui ne sont pas dans mylist.txt
Y a-t-il un moyen de le faire?
Dans votre "Phase d'extraction", vous pouvez utiliser le strip-components
drapeau comme
tar xvf tarname.tar --strip-components=n
ce qui supprimera les n premiers composants principaux du nom de fichier. Bien que si vous avez des composants de chemin de fichier différents, cela ne fonctionnera pas dans tous les cas.
Si vous voulez le faire pendant l'archivage, une seule chose me vient à l'esprit, et je partagerai
INPUT: liste des fichiers + chemins complets
1) pour chaque ligne, séparez le chemin du nom de fichier
2) Exécutez cd sur ce chemin et tar sur ce nom de fichier
3) répéter pour chaque ligne