web-dev-qa-db-ja.com

Webディレクトリファイルをtarおよびgzipして、ローカルマシンから1つのコマンドで(rsyncを使用して)ダウンロードするにはどうすればよいですか?

これがより効率的であることに気付いたので、元の質問を書き直しています。

ウェブサイトのファイルをtarおよびgzipで圧縮してから、ダウンロードしたいと思います。

Tarとcvzfを使用して、1つのコマンドでtarとgzipを実行できることを知っています。

そして、次のようなコマンドでrsyncを使用してパーソナルコンピューターにダウンロードできます:rsync -av --stats [email protected]:/ remote_directory_path/filename/local_directory_path/filename

これを1つのコマンドに組み合わせることができますか?

または、誰かがバックアップ目的でWebディレクトリをローカルマシンに1つのファイルとしてダウンロードするための最良の方法を提案できる場合。

2
linstar

リモートサーバーのディレクトリツリーをローカルマシンにミラーリングしたくないとあなたは言います。その場合、rsyncは間違ったツールです。リモートコンテンツを直接tarして、圧縮されたtarballをローカルマシンに配信できます。

ssh [email protected] tar -C /path/to/directory -czf - . | cat >tarball.tgz

rsyncとは異なり、これはローカルで状態を維持しないため、転送中に接続が切断された場合は、アーカイブ全体を再度転送する必要があります。これを回避する1つの方法は、リモートサーバー上のコンテンツをtarしてから、rsyncを使用してそれを転送することです。

ssh [email protected] 'tar -C /path/to/directory -cf - . | gzip --rsyncable >tarball.tgz'
rsync -av [email protected] tarball.tgz .

--rsyncableフラグは、圧縮ファイル内に再起動マーカーを提供するため、非圧縮の元のファイルを少し変更しても、圧縮結果全体が変更されることはありません。

3
roaima

ファイルを圧縮することができます転送で-zオプションですが、これは受信したファイルには影響しません(転送が高速になることを除いて)。つまり、単一のファイルに「gzip圧縮」されません。

リモートディレクトリをtarしてから、単一のファイルをrsyncすることができます。これにより、コピーする小さなファイルがたくさんある場合に、転送プロセスを高速化できます。

ただし、ディレクトリをrsyncし、後で(バックアップファイルとして)tarを作成することも、同じように意味があります。次回これを行うときは、changedファイルのみが転送されるため、rsyncという名前になります。

0
Freddy