2013-04-16 7 views
0

J'écris un script bash, qui devrait créer une archive .tar.gz à partir du répertoire spécifié, y compris la structure du fichier. C'est un devoir et j'en ai besoin pour travailler sur le système Solaris que mon école utilise. Cela signifie que je ne peux pas utiliser le goudron comme celui-ciBash create .tar.gz sous Solaris

tar xvzf archive.tar.gz ./ 

parce que ce système utilise une version de goudron ancienne sans -Z option. Je l'utilise comme celui-ci

tar xvf - ./ | gzip > archive.tar.gz 

Il fonctionne très bien, sauf un fait étrange, que lorsque j'examine le contenu de l'archive, il contient lui-même (en d'autres termes, il contient « archive.tar.gz »). Comment puis-je empêcher cela?

+1

'tar' sous Solaris a un argument' X Exclude. Utilisez l'argument exclude-filename en tant que fichier contenant une liste de fichiers nommés (ou de répertoires) à exclure du fichier tar lors de l'utilisation des lettres clés c, x ou t. ». Créez un fichier dans/tmp qui contient le nom du fichier résultant. Ou créez le fichier tar compressé dans/tmp et déplacez-le s'il a été créé avec succès. – TrueY

Répondre

0

En d'autres termes, ce fichier nommé "archive.tar.gz" est créé immédiatement lorsque vous exécutez votre commande. Signification, avant que gzip soit appelé. C'est juste un fichier vide, mais c'est dans le répertoire. Pour éviter l'inclure dans une archive résultante, vous pouvez essayer de modifier votre script dans l'une des façons suivantes:

  1. tar xvf - ./ | gzip > ../archive.tar.gz
  2. tar xvf - {path_to_dir_you_want_to_compress_files_from} | gzip > archive.tar.gz

Malheureusement, je ne peux pas vérifier si l'un de ces scripts fonctionne, parce que je n'ai pas Solaris nulle part. S'il vous plaît, faites-moi savoir si cela fonctionne.

+0

le premier ne fonctionne pas exactement comme j'en ai besoin. Il corrige le problème mais l'archive est créée dans un répertoire "supérieur" (sry, ne connait pas le bon mot pour ce xD). La deuxième fonctionne bien et j'imagine que j'aurais dû le mentionner mais évidemment le problème se produit seulement si je compresse le répertoire de travail et votre suggestion ne le fixe pas (peut-être je ne l'obtiens pas) –

+0

Merci pour vos commentaires. Cela a fonctionné exactement comme je le pensais – user2256686

+0

Ne fonctionnant pas pour moi, il fallait changer 'tar xvf' en' tar cvf' –

1

Cela fonctionne: tar cvf - | gzip> archive.tar.gz