Comment supprimer le chemin lors de l'archivage avec TAR [fermé]

J'ai un fichier qui contient la liste des fichiers que je veux archiver avec tar. Appelons-le 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, mais à l'exclusion /path1/path2/. Actuellement en faisant ceci:

tar -cvf allfiles.tar -T mylist.txt

Conserve le chemin après désarchivage.

J'ai essayé ceci mais ne fonctionnera pas aussi:

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 ma liste.txt

Est-il un moyen de le faire?

22
demandé sur neversaint 2011-11-08 02:33:28

1 réponses

Dans votre "Phase D'Extraction", vous pouvez utiliser l'indicateur strip-components comme

tar xvf tarname.tar --strip-components=n

Qui supprimera les N premiers composants du nom de fichier. Bien que si vous avez des composants de chemin de fichier différents, cela ne fonctionnera pas pour tous les cas.

Si vous voulez le faire pendant l'archivage, une seule chose vient à l'esprit, et je vais partager

Entrée: 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 celui-ci nom du fichier

3) répéter pour chaque ligne

36
répondu hovanessyan 2011-11-07 23:16:56