Comment créer une archive tar dans un autre répertoire?

39

Je souhaite créer une archive tar dans un répertoire différent plutôt que dans le répertoire actuel.

J'ai essayé cette commande:

tar czf file.tar.gz file1 -C /var/www/

mais il crée l'archive dans le répertoire en cours. Pourquoi?

Omid
la source
3
Vous semblez avoir mal compris la signification de -C(ce qui n’est pas étrange, mais documenté vaguement). Pour plus de détails, voir serverfault.com/q/416002/86283 .
NN

Réponses:

48

La façon simple, si vous n'êtes pas particulièrement besoin d'utiliser -Cpour dire tarau changement dans un autre répertoire, est de spécifier simplement le chemin complet vers l'archive sur la ligne de commande. Vous pouvez ensuite figurer dans le répertoire de votre choix pour créer la structure de répertoires de votre choix dans l’archive.

Ce qui suit va créer l’archive /var/www/file.tar.gzet la placer à file1partir du répertoire courant (quel qu’il soit), sans information de chemin d’archive.

tar czf /var/www/file.tar.gz file1

Le chemin d'accès (à l'archive, aux fichiers constitutifs ou aux deux) peut bien sûr aussi être relatif. Si file1est dans /tmp, vous /var/spoolvoulez créer l'archive /var/www, vous pouvez utiliser quelque chose comme:

tar czf ../www/file1.tar.gz /tmp/file1

Il y a un million de variations sur le thème, mais cela devrait vous aider à démarrer. Ajoutez le vdrapeau si vous voulez voir ce qui tarse passe réellement.

un CVn
la source
1
Vous pouvez également utiliser un chemin relatif.
NN
@NN Absolument, mais comme nous n'avons aucune idée de ce qu'il en $PWDest, il semblait plus sûr d'utiliser un chemin absolu dans l'exemple.
un CVn
En effet, j’ai pensé qu’il était logique d’inclure cela pour montrer que c’était une option disponible pour résoudre le problème.
NN
De cette façon, le chemin de file1l'archive tar sera /tmp. Cela peut être ou ne pas être ce que vous attendez.
mouviciel
8

Je transforme les données compressées en un flux (-), puis renommer et localiser facilement (>) là où je le souhaite (De plus, je tar toujours le chemin relatif (./), il est donc plus facile de gérer la décompression)

tar -cvf - ./dir-to-compress/* > /location-of-new-file/filename.tar
David King
la source
Cela n’aide en rien les fichiers individuels et -Cest beaucoup plus idiomatique (et plus court).
Mahmoud Al-Qudsi
3

Je pense que cela devrait être:
tar czf file.tar.gz -C /var/www/ file1

Ce qui fonctionne pour moi Il vous dit de changer de répertoire puis de choisir un fichier.

utilisateur2039152
la source
-2

A fonctionné parfaitement

cd /home; tar -czvf - /var/log/* > varlog.tar.gz
Myhera
la source