J'essaie de créer un programme graphique pour mon script.
Dans le script, j'utilise tar pour créer une archive tar.
Du programme graphique, j'obtiens le nom complet du fichier que je veux créer une archive tar.
tar -cvf temp.tar /home/username/dir1/dir2/selecteddir
Mon archive tar comprend la maison, le nom d'utilisateur, dir1, dir2 et selecteddir tandis que je veux que tar crée une archive comprenant uniquement selecteddir.
Vous pouvez utiliser le -C
option de tar
pour accomplir ceci:
tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir
Depuis la page de manuel de tar
:
-C directory
In c and r mode, this changes the directory before adding the following files.
In x mode, change directories after opening the archive but before extracting
entries from the archive.
Il existe deux méthodes que vous pouvez utiliser pour résoudre ce problème.
Le premier, à mon avis, est plus facile. Il suffit de cd
dans le répertoire directement au-dessus de celui que vous souhaitez compresser. Dans ce cas, ce serait dir2
.
$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir
La deuxième façon consiste à utiliser l'option --transform
qui prend une expression sed
et l'exécute avec les noms de fichiers. Remarque: vous devrez vous échapper /
dans l'expression sed
.
$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'
Tout d'abord, allez dans le répertoire de travail,
cd /your/working/directory/
Ensuite, utilisez la magie *
:-)
tar -cvf temp.tar *
En fait, j'ai trouvé un problème en utilisant la réponse de Ketan
tar -C/home/nom d'utilisateur/dir1/dir2 -cvf temp.tar selecteddir
Lorsque vous voulez simplement copier tous les fichiers juste en dir2, juste tous les fichiers, je commence d'abord par l'idée:
tar -C/home/nomutilisateur/dir1/dir2 -cvf temp.tar *
Cependant, lorsque vous n'êtes pas dans le répertoire dir2, cela causerait un problème puisque * tarerait les fichiers dans votre diectroy actuel. Et j'ai résolu le problème en utilisant la commande ci-dessous:
tar -C /home/username/dir1/dir2 -cvf temp.tar ./