web-dev-qa-db-fra.com

Comment supprimer le chemin lors de l'archivage avec TAR

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?

23
neversaint

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

35
hovanessyan