これがより効率的であることに気づき、元の質問を書き直しています。
私のウェブサイトファイルをtarとgzipに圧縮してダウンロードしたいです。
tarとcvzfを使用して、1つのコマンドでtarとgzipを使用できることを知っています。
その後、rsync -av --statsコマンドを使用して、rsyncを使用してパーソナルコンピュータにダウンロードできます。[Eメール保護]:/リモートディレクトリパス/ファイル名/ローカルディレクトリパス/ファイル名
これを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
フラグは、圧縮されていない元のファイルのマイナーな変更によって圧縮結果全体が変更されないように、圧縮されたファイル内に再開マークを提供します。
答え2
ファイルを圧縮できます期間このオプションを使用して転送します-z
。ただし、これは受信したファイルには影響しません(高速転送を除く)。つまり、単一のファイルとして「gzipped」されません。
リモートディレクトリをtarしてから個々のファイルをrsyncできます。コピーする小さなファイルが多い場合は、転送プロセスを高速化できます。
しかし、前述したようにディレクトリを再同期してからtar(バックアップファイルとして)をビルドすることも意味があります。次回これをやるならば、変更ファイルが転送されるため、名前はrsyncです。