あなたがしたいことをする多くの方法があります。最も簡単なのは、pìpeを使用することです。
tar zcvf - MyBackups | ssh user@server "cat > /path/to/backup/foo.tgz"
ここで、tar
呼び出しはgzip
(z
flag)によって処理されています。compress
(Z
)およびbzip
(j
)も使用できます。の場合7z
、これを行います:
tar cf - MyBackups | 7za a -si -mx=9 -ms=on MyBackups.tar.7z |
ssh user@server "cat > /path/to/backup/foo.7z"
最善の方法は、しかし、おそらくですrsync
。
Rsync is a fast and extraordinarily versatile file copying tool. It can copy
locally, to/from another host over any remote shell, or to/from a remote rsync dae‐
mon. It offers a large number of options that control every aspect of its behavior
and permit very flexible specification of the set of files to be copied. It is
famous for its delta-transfer algorithm, which reduces the amount of data sent over
the network by sending only the differences between the source files and the exist‐
ing files in the destination. Rsync is widely used for backups and mirroring and
as an improved copy command for everyday use.
rsync
持っている道あまりにも多くのオプションを。それらを実際に読む価値はありますが、一見怖いです。ただし、このコンテキストで重要なのは次のとおりです。
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level
-z, --compress
With this option, rsync compresses the file data as it is sent to the desti‐
nation machine, which reduces the amount of data being transmitted --
something that is useful over a slow connection.
Note that this option typically achieves better compression ratios than can
be achieved by using a compressing remote shell or a compressing transport
because it takes advantage of the implicit information in the matching data
blocks that are not explicitly sent over the connection.
したがって、あなたの場合、次のようなものが必要になります。
rsync -z MyBackups user@server:/path/to/backup/
ファイルは転送中に圧縮され、宛先に解凍されて到着します。
さらにいくつかの選択肢:
scp
データ自体を圧縮できます
-C Compression enable. Passes the -C flag to ssh(1) to
enable compression.
$ scp -C source user@server:/path/to/backup
取得する方法があるかもしれませんrsync
し、7za
素晴らしいプレーするが、そうでは意味がありません。利点はrsync
、ローカルファイルとリモートファイルの間で変更されたビットのみをコピーすることです。ただし、小さなローカル変更により、圧縮ファイルが大きく異なる可能性があるrsync
ため、これを使用しても意味がありません。問題を複雑にするだけで、何のメリットもありません。ssh
上記のように直接使用するだけです。本当にこれをしたい場合は、サブシェルを引数として渡すことで試すことができますrsync
。私のシステムでは、7za
圧縮データを端末に書き込むことができないため、これを使用できませんでした。実装が異なる可能性があります。次のようなものを試してください(これは私にはうまくいきません):
rsync $(tar cf - MyBackups | 7za a -an -txz -si -so) \
user@server:/path/to/backup
もう1つのポイントは、7z
Linuxでのバックアップには使用しないことです。7z
manページに記載されているとおり:
Linux / Unixでは、バックアップ目的で7-zip形式を使用
しないでください:-7-zipはファイルの所有者/グループを保存しません。
-z
、少なくとも2倍遅いです。ssh経由のrsyncingよりもさらに高速にするには、-W
フラグを使用してrsyncデーモンとrsyncをセットアップします(ファイル全体をコピーします(デルタxferアルゴリズムなし)