これがより効率的であることに気付いたので、元の質問を書き直しています。
ウェブサイトのファイルをtarおよびgzipで圧縮してから、ダウンロードしたいと思います。
Tarとcvzfを使用して、1つのコマンドでtarとgzipを実行できることを知っています。
そして、次のようなコマンドでrsyncを使用してパーソナルコンピューターにダウンロードできます:rsync -av --stats [email protected]:/ remote_directory_path/filename/local_directory_path/filename
これを1つのコマンドに組み合わせることができますか?
または、誰かがバックアップ目的でWebディレクトリをローカルマシンに1つのファイルとしてダウンロードするための最良の方法を提案できる場合。
リモートサーバーのディレクトリツリーをローカルマシンにミラーリングしたくないとあなたは言います。その場合、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
フラグは、圧縮ファイル内に再起動マーカーを提供するため、非圧縮の元のファイルを少し変更しても、圧縮結果全体が変更されることはありません。
ファイルを圧縮することができます中転送で-z
オプションですが、これは受信したファイルには影響しません(転送が高速になることを除いて)。つまり、単一のファイルに「gzip圧縮」されません。
リモートディレクトリをtarしてから、単一のファイルをrsyncすることができます。これにより、コピーする小さなファイルがたくさんある場合に、転送プロセスを高速化できます。
ただし、ディレクトリをrsyncし、後で(バックアップファイルとして)tarを作成することも、同じように意味があります。次回これを行うときは、changedファイルのみが転送されるため、rsyncという名前になります。