Ne créez pas le fichier tar dans le répertoire que vous empaquetez:
tar -czf /tmp/workspace.tar.gz .
fait l'affaire, sauf qu'il extraira les fichiers dans tout le répertoire actuel lorsque vous décompressez. Mieux vaut faire:
cd ..
tar -czf workspace.tar.gz workspace
ou, si vous ne connaissez pas le nom du répertoire dans lequel vous étiez:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Cela suppose que vous n'avez pas suivi les liens symboliques pour vous rendre là où vous êtes et que le shell n'essaie pas de vous deviner en sautant en arrière à travers un lien symbolique - bash
n'est pas digne de confiance à cet égard. Si vous devez vous inquiéter à ce sujet, utiliser cd -P ..
pour faire un répertoire de changement physique. Stupide que ce ne soit pas le comportement par défaut à mon avis - déroutant, au moins, pour ceux pour qui cd ..
n'ont jamais eu de signification alternative.)
Un commentaire dans la discussion dit:
Je [...] dois exclure le répertoire supérieur et [...] je dois placer le tar dans le répertoire de base.
La première partie du commentaire n'a pas beaucoup de sens - si le fichier tar contient le répertoire actuel, il ne sera pas créé lorsque vous extrayez le fichier de cette archive car, par définition, le répertoire actuel existe déjà (sauf dans des circonstances très étranges ).
La deuxième partie du commentaire peut être traitée de deux manières:
- Soit: créez le fichier ailleurs -
/tmp
est un emplacement possible - puis replacez-le à l'emplacement d'origine une fois qu'il est terminé.
- Ou: si vous utilisez GNU Tar, utilisez l'
--exclude=workspace.tar.gz
option. La chaîne après le =
est un modèle - l'exemple est le modèle le plus simple - une correspondance exacte. Vous devrez peut-être spécifier --exclude=./workspace.tar.gz
si vous travaillez dans le répertoire courant contrairement aux recommandations; vous devrez peut-être spécifier --exclude=workspace/workspace.tar.gz
si vous augmentez d'un niveau comme suggéré. Si vous avez plusieurs fichiers tar à exclure, utilisez ' *
', comme dans --exclude=./*.gz
.