comment append des files à partir d'un dossier à archiver au lieu des dossiers lui-même?

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:

entrer la description de l'image ici

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 ):

entrer la description de l'image ici

ce que je voulais c'était (directement les files, pas de dossier):

entrer la description de l'image ici

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) 

  • 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.