ce n'est pas un doublon de créer une archive tar sans inclure le directory parent
Si je fais le tar -czf archive directory
, le directory sera ajouté à l'archive. Je veux append les files du directory du dossier pas le directory lui-même, comment?
veuillez suggérer une réponse qui n'implique pas de cd
dans le directory
ce n'est pas un doublon de ce que son affichage:
J'ai un directory appelé somedir
avec des contenus comme abc
, xyz
:
ls somedir abc xyz
Je veux faire une archive qui contiendra des files abc
, xyz
, pas somedir
dossier somedir
Mise à jour : si j'utilise la command tar -C /home/username/dir1/dir2 -cvf temp.tar yourarchive
(dont la réponse à la question dont ma question est appelée duplicate of)
j'ai compris:
ce que je voulais, c'est tar czf archive.tar.gz -C yourarchive .
, J'obtiens ceci (ce qui est assez proche de ce que je voulais ):
ce que je voulais c'était (directement les files, pas de dossier):
Utilisez -C
:
tar czf archive -C directory .
Cela indique à tar
d'utiliser le directory
comme directory
de travail et d'archiver tout ce qui se trouve dans le directory ( .
).
L'utilisation de -C
est presque équivalente à l'utilisation de cd
; archive
ci-dessus est interprétée par rapport au directory courant quand tar
commence, puis tar
change son directory de travail en directory
avant d'interpréter .
.
Je ne suis pas sûr à quel point la prise en charge de tar -C
est tar -C
, mais toute dissortingbution Linux devrait le supporter.
essayer
tar cvf archive.tar -C somedir $(ls somedir)
où
cvf
va cvf
V erbose (ly) F ile Archive.tar
-C somedir
va requestr à tar d'utiliser somedir
$(ls somedir )
list dans somedir et $( )
passe result en argument Modifier:
Comme indiqué dans le commentaire, utilisez ls -A
(pas ls -a ) pour listr le file dot.
Vous pouvez le faire avec pax (1) , qui est le successeur du posix, mais il n'a jamais vraiment pris de suite. Il peut écrire des files tar et il peut faire la transformation de nom de file que vous voulez faire:
pax -wzf archive -s '|directory/\?||' directory
Cela se résume à:
-w
écrit une archive (identique à -c
pour le tar) -z
compresser l'archive (identique à tar) -f archive
écrire dans l' archive
file (identique à tar) -s '|directory/\?||'
remplacez les noms de files dans les archives. Remplacez le directory
string par une string optionnelle /
avec la string vide. L'option /
est nécessaire car le directory lui-même ne se termine pas par /
, mais tous les autres membres ont ce /
. Cela n'a pas besoin d'être ancré au début de la string ( ^
) car il remplace seulement la première correspondance (comme sed(1)
) et tous les files commenceront par le directory/\?
Pour être explicite, vous pouvez append:
-x ustar
écrire un file tar POSIX mais c'est le défaut.
Vous devriez être capable de find pax dans votre référentiel de packages Linux ou BSD. Il semble y avoir une pax GNU, mais je ne connais pas l'état de cela. Debian semble avoir une version BSD de pax.