SSH経由でtar / gzを使用してローカルコンピューターにディレクトリを圧縮しますか?


15

基本的に、リモートマシン上のディレクトリをtar / gzし、リモートからローカルマシンに接続し直すことなく、ローカルコンピュータにファイルを保存したいと思います。SSHでこれを行う方法はありますか?tarファイルはリモートマシンに保存する必要はなく、ローカルマシンにのみ保存します。これは可能ですか?

回答:


26

sshコマンドで実行できます。tar標準出力でアーカイブを作成するように指示するだけです:

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

他のマシンで多くのファイル操作を行いたいが、ワンショットアーカイブの作成には過剰な場合に便利な別のアプローチは、リモートマシンのファイルシステムをSSHFSFUSEファイルシステム)でマウントすることです。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

3
私はちょうど興味があります、なぜまたはのtar -cf - foo | gzip -9代わりにあなたがお勧めしますtar -czf - footar -cz foo
パトリック

@Patrickやや移植性に優れています。たとえば、Solarisで動作します。
ジル 'SO-悪であるのをやめる'

すべての議論をとても親切に説明していただけますか?
ルートV.

3
@RooticalV。fileから標準出力tar -cf - foo-c)にアーカイブを作成-f -しますfoogzip -9最高の(最も遅い)圧縮方法を使用します。気にしない場合は、を使用できますssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz
-arekolek

-1

トランスポート専用に圧縮してディレクトリまたはファイルをコピーする簡単な方法:

$ ssh domain.net 'ls foo'
file1   file2

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

$ ls foo
file1   file2

1
これはtarアーカイブをローカルマシンに保存しません。これは意図されたものです。
クサラナナンダ

1
これは、圧縮を使用してSSHを介して何かをコピーする方法を検索するときに、この質問(私のような)を見つけた人向けです。tar xzより単純で読みやすい例で、パイプからこの追加があります。
ピエールドレスピネー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.