Có nhiều cách để làm những gì bạn muốn. Đơn giản nhất là sử dụng pìpe:
tar zcvf - MyBackups | ssh user@server "cat > /path/to/backup/foo.tgz"
Ở đây, việc nén đang được xử lý bằng cách tar
gọi gzip
( z
cờ). Bạn cũng có thể sử dụng compress
( Z
) và bzip
( j
). Đối với 7z
, làm điều này:
tar cf - MyBackups | 7za a -si -mx=9 -ms=on MyBackups.tar.7z |
ssh user@server "cat > /path/to/backup/foo.7z"
Cách tốt nhất , tuy nhiên, có lẽ là 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
có cách quá nhiều lựa chọn. Nó thực sự đáng đọc qua chúng nhưng chúng đáng sợ ngay từ cái nhìn đầu tiên. Những người bạn quan tâm trong bối cảnh này là:
-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.
Vì vậy, trong trường hợp của bạn, bạn sẽ muốn một cái gì đó như thế này:
rsync -z MyBackups user@server:/path/to/backup/
Các tập tin sẽ được nén trong khi quá cảnh và đến nơi được giải nén tại đích.
Một số lựa chọn khác:
scp
chính nó có thể nén dữ liệu
-C Compression enable. Passes the -C flag to ssh(1) to
enable compression.
$ scp -C source user@server:/path/to/backup
Có thể có một cách để có được rsync
và 7za
chơi tốt nhưng không có điểm nào để làm như vậy. Lợi ích của rsync
nó là nó sẽ chỉ sao chép các bit đã thay đổi giữa các tệp cục bộ và từ xa. Tuy nhiên, một thay đổi cục bộ nhỏ có thể dẫn đến một tệp nén rất khác nhau do đó không có điểm nào trong việc sử dụng rsync
cho việc này. Nó chỉ làm phức tạp vấn đề không có lợi ích. Chỉ cần sử dụng trực tiếp ssh
như hình trên. Nếu bạn thực sự muốn làm điều này, bạn có thể thử bằng cách đưa ra một lớp con làm đối số rsync
. Trên hệ thống của tôi, tôi không thể làm việc này 7za
vì nó không cho phép bạn ghi dữ liệu nén vào thiết bị đầu cuối. Có lẽ việc thực hiện của bạn là khác nhau. Hãy thử một cái gì đó như ( điều này không làm việc cho tôi ):
rsync $(tar cf - MyBackups | 7za a -an -txz -si -so) \
user@server:/path/to/backup
Một điểm khác là 7z
không nên sử dụng để sao lưu trên Linux . Như đã nêu trên 7z
trang người đàn ông:
KHÔNG SỬ DỤNG định dạng 7-zip cho mục đích sao lưu trên Linux / Unix vì:
- 7-zip không lưu trữ chủ sở hữu / nhóm của tệp.
-z
chậm hơn ít nhất hai lần. Để có tốc độ thậm chí nhiều hơn tốc độ rsyncing trên ssh, hãy thiết lập một daemon rsync và rsync bằng-W
cờ (sao chép toàn bộ tệp (thuật toán delta-xfer).