Donc, je suis plutôt nouveau dans Ubuntu et dans l’ensemble de l’environnement Linux, même si je suis un informaticien et que je veux me familiariser avec les commandes de base.
En ce moment, je travaille avec les fichiers .tar et .tar.gz et j'ai un problème pour en créer un.
Supposons que j'ai la structure de fichier suivante:
./
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Avec les commandes suivantes, je crée actuellement mon fichier tar:
tar -cvf ../archive.tar a
tar -rvf ../archive.tar b
Maintenant, mon archive.tar a aussi le format
archive.tar
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Venons-en maintenant à ma question: Comment puis-je obtenir les trois structures d’archive suivantes avec la structure de fichier susmentionnée:
Ajouter un dossier de base commun
archive.tar
|-> baseFolder
|-> a
|-> Release
|-> [some files]
|-> b
|-> Release
|-> [some files]
Renommez les dossiers
archive.tar
|-> aChangedFolderName
|-> Release
|-> [some files]
|-> bChangedFolderName
|-> Release
|-> [some files]
Ajouter un dossier de base commun et renommer les dossiers
archive.tar
|-> baseFolder
|-> aChangedFolderName
|-> Release
|-> [some files]
|-> bChangedFolderName
|-> Release
|-> [some files]
Pour moi, peu importe si cela peut être accompli en plusieurs étapes, du moins j'espère pouvoir le faire. Et: # 1 serait le plus important pour moi.
Vous pouvez faire 1. avec la commande suivante:
tar cvf archive.tar --transform 's,^,baseFolder/,' a b
L'archive contiendra:
$ tar tvf archive.tar
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/a/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/a/foo
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/b/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/b/bar
Pour 2. vous pouvez exécuter tar
avec plusieurs options --transform
:
tar cvf archive.tar --transform 's,^a,changed_a,' --transform 's,^b,changed_b,' a b
L'archive contiendra:
$ tar tvf archive.tar
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 changed_a/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 changed_a/foo
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 changed_b/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 changed_b/bar
Pour 3. vous pouvez combiner 1. et 2. comme suit:
tar cvf archive.tar --transform 's,^a,changed_a,' --transform 's,^b,changed_b,' --transform 's,^,baseFolder/,' a b
L'archive contiendra:
$ tar tvf archive.tar
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_a/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_a/foo
drwxrwxr-x sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_b/
-rw-rw-r-- sylvain/sylvain 0 2015-03-18 12:47 baseFolder/changed_b/bar