40 votes

Comment tuber: cp | tar | gzip sans créer de fichiers intermédiaires?

Est-ce que quelqu'un peut me dire s'il est possible de rediriger | ceci sans avoir à créer de fichier physique n'importe où entre A et B.tar.gz?

Voici ce que j'essaie de faire:

  1. Fichier A
  2. Renommer A en B
  3. Tarer B.tar
  4. gzip -9 B.tar.gz

Par exemple:

cp A B | tar cvf - B | gzip -9 B.tar.gz

50voto

speakr Points 3727

Les exemples suivants peuvent être utilisés pour éviter de créer des fichiers intermédiaires:

tar avec gzip:

tar cf - A | gzip -9 > B.tar.gz

gzip sans tar:

gzip -9c A > B.gz

tar sans gzip:

tar cf B.tar A

Renommer (déplacer) A en B d'abord ne me semble pas logique. Si c'est l'intention, alors il suffit de mettre un mv A B && avant l'une des commandes ci-dessus et d'échanger A avec B là-bas.

Exemple avec tar et gzip:

mv A B && tar cf - B | gzip -9 > B.tar.gz

9voto

Bob Vale Points 291

Cela dépend de votre version de tar

Si vous avez la version qui prend en charge les transformations de membres (--transform ou --xform) alors vous pouvez simplement faire

tar -c --transform=s/A/B/ A | gzip -9 > B.tar.gz

le | gzip -9 >B.tar.gz peut être évité si votre tar prend en charge l'option -z

tar -zcvf B.tar.gz --transform=s/A/B/ A

Si votre version de tar ne prend pas en charge --transform alors vous devrez simplement copier le fichier d'abord par exemple

 cp A B && tar -zcvf B.tar.gz B

Cependant si vous ne compressez qu'un seul fichier, pourquoi ne pas sauter complètement la partie tar et simplement faire

cat A | gzip -9 > B.gz

0voto

Guest Points 1

Si vous utilisez cp pour faire une copie avec un nom/emplacement différent, incluez simplement le chemin d'accès complet final que vous voulez lors de la création de votre fichier .gzip terminé :

tar -cvf existing.file | gzip -1 > ./newdirectory/newnamed.file.tgz

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X