Compresser un répertoire en utilisant tar / gz sur SSH vers un ordinateur local?

15

Je voudrais essentiellement tar / gz un répertoire sur une machine distante et enregistrer le fichier sur mon ordinateur local sans avoir à se reconnecter à ma machine locale à partir de l'ordinateur distant. Existe-t-il un moyen de le faire via SSH? Le fichier tar n'a pas besoin d'être stocké sur la machine distante, uniquement sur la machine locale. Est-ce possible?

Naftuli Kay
la source

Réponses:

26

Vous pouvez le faire avec une commande ssh, dites simplement tarde créer l'archive sur sa sortie standard:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

Une autre approche, qui est plus pratique si vous voulez faire beaucoup de manipulations de fichiers sur l'autre machine mais qui est exagérée pour une création d'archive en une seule fois, consiste à monter le système de fichiers de la machine distante avec SSHFS (un système de fichiers FUSE ). Vous devez activer la compression au niveau SSH.

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo
Gilles 'SO- arrête d'être méchant'
la source
3
Je suis juste curieux, pourquoi avez-vous recommandé tar -cf - foo | gzip -9au lieu de tar -czf - fooou tar -cz foo?
Patrick
@Patrick Un peu plus portable, par exemple, cela fonctionnera sur Solaris.
Gilles 'SO- arrête d'être méchant'
Seriez-vous si gentil de décrire tous les arguments?
Rootical V.
3
@RooticalV. tar -cf - foocrée ( -c) une archive sur la sortie standard ( -f -) du fichier foo. gzip -9utilise la meilleure méthode de compression (la plus lente). Si vous ne vous souciez pas, vous pouvez simplement utiliser ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz.
arekolek
-1

Pour un moyen simple de copier un répertoire ou un fichier en le compressant uniquement pour le transport:

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2
Pierre de LESPINAY
la source
1
Cela ne stocke pas l' tararchive sur la machine locale, ce qui était prévu.
Kusalananda
1
C'est pour les gens qui se posent sur cette question (comme moi) lorsqu'ils cherchent comment copier quelque chose via SSH avec compression. Il y a juste cet ajout supplémentaire tar xzavec un exemple plus simple et plus lisible.
Pierre de LESPINAY