Créer une archive tar du répertoire courant sans période précédente


10

Quand je fais ce qui suit:

tar czvf ../myarchive.tar.gz ./

Je reçois un seul dossier racine (ennuyeux) dans mon archive tar:

ennuyeux

Comment supprimer cette horrible période lors de la création de l'archive?



3
Ou utilisez --transform/ --xform, comme suggéré par Magnus :tar -cf /path/to/output.tar -C /path/to/input-directory . --xform='s!^\./!!'
n.st

Réponses:


6

Non.

name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"

(Remarque: cela ne fonctionne pas si votre shell a activé le suivi des liens symboliques du répertoire actuel et que le répertoire actuel est accessible via un lien symbolique.)

Oui, ce n'est pas ce que vous avez demandé, mais c'est ce que vous devez faire. Les archives qui développent un grand nombre de fichiers dans le répertoire actuel sont ennuyeuses: cela met la charge de créer un répertoire cible pour le fichier sur chaque personne qui décompresse l'archive, et si elles les décompressent accidentellement dans un répertoire non vide, il est difficile de nettoyer. La plupart du temps, une archive doit créer un répertoire de premier niveau unique dont le nom est le nom de base de l'archive.


Compris. Si je me souviens bien, c'est vraiment très ennuyeux d'avoir à faire une étape supplémentaire pour décompresser une archive dans un répertoire spécifique (par exemple tar xzvf archive.tar.gz && mv archive/* /outputvs unzip archive.zip -d /output)
Naftuli Kay

9

Le point apparaît car tarcrée la structure du chemin comme vous le donnez dans les arguments. Donc, comme vous l'avez donné . en tant que source, l'archive est également créée dans la même structure.

Vous pouvez essayer ceci et vérifier:

tar -czvf ../myarchive.tar.gz *

Mise à jour de la réponse avec l'aide du commentaire de n.st

tar --xform s:'./':: -czvf ../myarchive.tar.gz ./

1
Le *glob ne correspondra pas aux fichiers cachés.
2014

: D eh..juste un débutant..n'a pas réalisé.
débutant

Vous pouvez utiliser d'autres globs bash pour inclure des fichiers cachés - jetez un œil ici .
n.st

0

mieux vaut ajouter ^ avant le précédent.

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

OU, tous les "/" dans le chemin d'accès complet à l'intérieur de l'archive seront supprimés sauf si "/" est la fin du chemin d'accès complet.


1
Veuillez suggérer une modification de cette réponse au lieu de publier une réponse distincte: unix.stackexchange.com/posts/144094/edit
muru
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.