Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Sao lưu Linux bằng rsync:15 lệnh thiết yếu

Sao lưu Linux bằng rsync:15 lệnh thiết yếu rsync là viết tắt của đồng bộ hóa từ xa.

rsync được sử dụng để thực hiện thao tác sao lưu trong UNIX/Linux.

Tiện ích rsync được sử dụng để đồng bộ hóa các tập tin và thư mục từ vị trí này sang vị trí khác một cách hiệu quả. Vị trí sao lưu có thể trên máy chủ cục bộ hoặc trên máy chủ từ xa.

Các tính năng quan trọng của rsync

  • Tốc độ :Lần đầu tiên, rsync sao chép toàn bộ nội dung giữa thư mục nguồn và thư mục đích. Lần tiếp theo, rsync chỉ chuyển các khối hoặc byte đã thay đổi đến vị trí đích, điều này giúp quá trình truyền rất nhanh.
  • Bảo mật :rsync cho phép mã hóa dữ liệu bằng giao thức ssh trong quá trình truyền.
  • Ít băng thông hơn :rsync sử dụng tính năng nén và giải nén từng khối dữ liệu ở đầu gửi và đầu nhận tương ứng. Vì vậy băng thông mà rsync sử dụng sẽ luôn ít hơn so với các giao thức truyền tệp khác.
  • Đặc quyền :Không cần đặc quyền để cài đặt và thực thi rsync

Cú pháp

$ rsync options source destination

Nguồn và đích có thể là cục bộ hoặc từ xa. Trong trường hợp từ xa, hãy chỉ định tên đăng nhập, tên máy chủ từ xa và vị trí.

Ví dụ 1. Đồng bộ hóa hai thư mục trên máy chủ cục bộ

Để đồng bộ hai thư mục trong máy tính cục bộ, hãy sử dụng lệnh rsync -zvr sau.

$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes received 1098 bytes 54966.00 bytes/sec
total size is 44867 speedup is 1.63
$

Trong ví dụ rsync ở trên:

  • -z là cho phép nén
  • -v dài dòng
  • -r biểu thị đệ quy

Bây giờ chúng ta hãy xem dấu thời gian trên một trong các tệp đã được sao chép từ nguồn tới đích. Như bạn thấy bên dưới, rsync không lưu giữ dấu thời gian trong quá trình đồng bộ hóa.

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 bin bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin 949 Sep 2 2009 /root/temp/sva.xml

Ví dụ 2. Giữ nguyên dấu thời gian trong quá trình Đồng bộ hóa bằng rsync -a

tùy chọn rsync -a biểu thị chế độ lưu trữ. -một tùy chọn thực hiện như sau,

  • Chế độ đệ quy
  • Giữ lại các liên kết tượng trưng
  • Giữ quyền
  • Giữ lại dấu thời gian
  • Giữ nguyên chủ sở hữu và nhóm

Bây giờ, thực thi lệnh tương tự được cung cấp trong ví dụ 1 (Nhưng với tùy chọn rsync -a) như hiển thị bên dưới:

$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes received 1104 bytes 55206.00 bytes/sec
total size is 44867 speedup is 1.63
$

Như bạn thấy bên dưới, rsync giữ nguyên dấu thời gian trong quá trình đồng bộ hóa.

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 root bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin 949 Jun 18 2009 /root/temp/sva.xml

Ví dụ 3. Chỉ đồng bộ hóa một tệp

Để chỉ sao chép một tệp, hãy chỉ định tên tệp cho lệnh rsync, như hiển thị bên dưới.

$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys
sent 42 bytes received 12380 bytes 3549.14 bytes/sec
total size is 12288 speedup is 0.99

Ví dụ 4. Đồng bộ hóa tệp từ cục bộ sang từ xa

rsync cho phép bạn đồng bộ hóa các tập tin/thư mục giữa hệ thống cục bộ và từ xa.

$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname
sent 15810261 bytes received 412 bytes 2432411.23 bytes/sec
total size is 45305958 speedup is 2.87

Trong khi thực hiện đồng bộ hóa với máy chủ từ xa, bạn cần chỉ định tên người dùng và địa chỉ IP của máy chủ từ xa. Bạn cũng nên chỉ định thư mục đích trên máy chủ từ xa. Định dạng là tên người dùng@machinename:path

Như bạn thấy ở trên, nó yêu cầu mật khẩu trong khi thực hiện rsync từ máy chủ cục bộ đến máy chủ từ xa.

Đôi khi bạn không muốn nhập mật khẩu trong khi sao lưu tệp từ máy chủ cục bộ sang máy chủ từ xa. Ví dụ:Nếu bạn có tập lệnh shell dự phòng, sao chép các tệp từ máy chủ cục bộ sang máy chủ từ xa bằng rsync, bạn cần có khả năng rsync mà không cần phải nhập mật khẩu.

Để làm điều đó, hãy thiết lập mật khẩu ssh ít đăng nhập như chúng tôi đã giải thích trước đó.

Ví dụ 5. Đồng bộ hóa tệp từ xa đến cục bộ

Khi bạn muốn đồng bộ hóa các tập tin từ xa sang cục bộ, hãy chỉ định đường dẫn từ xa trong nguồn và đường dẫn cục bộ trong đích như hiển thị bên dưới.

$ rsync -avz thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87

Ví dụ 6. Shell từ xa để đồng bộ hóa

rsync cho phép bạn chỉ định shell từ xa mà bạn muốn sử dụng. Bạn có thể sử dụng rsync ssh để bật kết nối từ xa được bảo mật.

Sử dụng rsync -e ssh để chỉ định sử dụng shell từ xa nào. Trong trường hợp này, rsync sẽ sử dụng ssh.

$ rsync -avz -e ssh thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87

Ví dụ 7. Không ghi đè các tệp đã sửa đổi tại đích

Trong trường hợp đồng bộ hóa thông thường, nếu một tệp bị sửa đổi ở đích, chúng tôi có thể không muốn ghi đè tệp đó bằng tệp cũ từ nguồn.

Sử dụng tùy chọn rsync -u để thực hiện chính xác điều đó. (tức là không ghi đè lên tệp ở đích nếu nó bị sửa đổi). Trong ví dụ sau, tệp có tên Basenames đã được sửa đổi ở đích. Vì vậy, nó sẽ không bị ghi đè bằng rsync -u.

$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames
$ rsync -avzu thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
sent 122 bytes received 505 bytes 114.00 bytes/sec
total size is 45305958 speedup is 72258.31
$ ls -lrt
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames

Ví dụ 8. Chỉ đồng bộ hóa Cấu trúc cây thư mục (không phải tệp)

Sử dụng tùy chọn rsync -d để chỉ đồng bộ hóa cây thư mục từ nguồn đến đích. Ví dụ dưới đây chỉ đồng bộ hóa cây thư mục theo cách đệ quy, không đồng bộ hóa các tệp trong thư mục.

$ rsync -v -d thegeekstuff@192.168.200.10:/var/lib/ .
Password:
receiving file list ... done
logrotate.status
CAM/
YaST2/
acpi/
sent 240 bytes received 1830 bytes 318.46 bytes/sec
total size is 956 speedup is 0.46

Ví dụ 9. Xem tiến trình rsync trong quá trình truyền

Khi sử dụng rsync để sao lưu, bạn có thể muốn biết tiến trình sao lưu. tức là có bao nhiêu tệp được sao chép, tốc độ sao chép tệp, v.v.

Tùy chọn rsync –progress hiển thị tiến trình chi tiết thực hiện rsync như hiển thị bên dưới.

$ rsync -avz --progress thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ...
19 files to consider
./
Basenames
 5357568 100% 14.98MB/s 0:00:00 (xfer#1, to-check=17/19)
Conflictname
 12288 100% 35.09kB/s 0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes received 15810211 bytes 2108082.27 bytes/sec
total size is 45305958 speedup is 2.87

Bạn cũng có thể sử dụng tiện ích rsnapshot (sử dụng rsync) để sao lưu máy chủ linux cục bộ hoặc sao lưu máy chủ linux từ xa.

Ví dụ 10. Xóa các tệp được tạo tại đích

Nếu một tệp không có ở nguồn nhưng có ở đích, bạn có thể muốn xóa tệp đó ở đích trong rsync.

Trong trường hợp đó, hãy sử dụng tùy chọn –delete như hiển thị bên dưới. Tùy chọn xóa rsync sẽ xóa các tệp không có trong thư mục nguồn.

# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt
$ rsync -avz --delete thegeekstuff@192.168.200.10:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting new-file.txt
./
sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 45305958 speedup is 108908.55

Target có file mới tên là new-file.txt, khi đồng bộ với nguồn bằng tùy chọn –delete sẽ loại bỏ file new-file.txt

Ví dụ 11. Không tạo tệp mới tại mục tiêu

Nếu muốn, bạn chỉ có thể cập nhật (Đồng bộ hóa) các tệp hiện có ở mục tiêu. Trong trường hợp nguồn có các tệp mới không có ở đích, bạn có thể tránh tạo các tệp mới này ở đích. Nếu bạn muốn tính năng này, hãy sử dụng tùy chọn –hiện có với lệnh rsync.

Đầu tiên, thêm new-file.txt vào nguồn.

[/var/lib/rpm ]$ > new-file.txt

Tiếp theo, thực thi rsync từ mục tiêu.

$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2's password:
receiving file list ... done
./
sent 26 bytes received 419 bytes 46.84 bytes/sec
total size is 88551424 speedup is 198991.96

Nếu bạn thấy kết quả ở trên thì có nghĩa là nó không nhận được tệp mới new-file.txt

Ví dụ 12. Xem các thay đổi giữa Nguồn và Đích

Tùy chọn này hữu ích để xem sự khác biệt trong các tệp hoặc thư mục giữa nguồn và đích.

Tại nguồn:

$ ls -l /var/lib/rpm
-rw-r--r-- 1 root root 5357568 2010-06-24 08:57 Basenames
-rw-r--r-- 1 root root 12288 2008-05-28 22:03 Conflictname
-rw-r--r-- 1 root root 1179648 2010-06-24 08:57 Dirnames

Tại điểm đến:

$ ls -l /root/temp
-rw-r--r-- 1 root root 12288 May 28 2008 Conflictname
-rw-r--r-- 1 bin bin 1179648 Jun 24 05:27 Dirnames
-rw-r--r-- 1 root root 0 Sep 3 06:39 Basenames

Trong ví dụ trên, giữa nguồn và đích có hai điểm khác biệt. Đầu tiên, chủ sở hữu và nhóm của tệp Dirname khác nhau. Tiếp theo, kích thước của tệp Basenames sẽ khác nhau.

Bây giờ chúng ta hãy xem rsync hiển thị sự khác biệt này như thế nào. Tùy chọn -i hiển thị các thay đổi của mục.

$ rsync -avzi thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
>f.st.... Basenames
.f....og. Dirnames
sent 48 bytes received 2182544 bytes 291012.27 bytes/sec
total size is 45305958 speedup is 20.76

Ở đầu ra, nó hiển thị khoảng 9 chữ cái phía trước tên tệp hoặc tên thư mục cho biết các thay đổi.

Trong ví dụ của chúng tôi, các chữ cái phía trước Tên cơ sở (và Tên đệm) có nội dung như sau:

> specifies that a file is being transferred to the local host.
f represents that it is a file.
s represents size changes are there.
t represents timestamp changes are there.
o owner changed
g group changed.

Ví dụ 13. Bao gồm và loại trừ mẫu trong quá trình truyền tệp

rsync cho phép bạn đưa ra mẫu bạn muốn bao gồm và loại trừ các tệp hoặc thư mục trong khi thực hiện đồng bộ hóa.

$ rsync -avz --include 'P*' --exclude '*' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Packages
Providename
Provideversion
Pubkeys
sent 129 bytes received 10286798 bytes 2285983.78 bytes/sec
total size is 32768000 speedup is 3.19

Trong ví dụ trên, nó chỉ bao gồm các tệp hoặc thư mục bắt đầu bằng ‘P’ (sử dụng rsync include) và loại trừ tất cả các tệp khác. (sử dụng rsync loại trừ ‘*’ )

Ví dụ 14. Không chuyển tệp lớn

Bạn có thể yêu cầu rsync không truyền các tệp lớn hơn kích thước cụ thể bằng tùy chọn rsync –max-size.

$ rsync -avz --max-size='100K' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggername
sent 252 bytes received 123081 bytes 18974.31 bytes/sec
total size is 45305958 speedup is 367.35

max-size=100K khiến rsync chỉ truyền các tệp nhỏ hơn hoặc bằng 100K. Bạn có thể chỉ ra M là megabyte và G là gigabyte.

Ví dụ 15. Chuyển toàn bộ tệp

Một trong những tính năng chính của rsync là nó chỉ chuyển khối đã thay đổi đến đích, thay vì gửi toàn bộ tệp.

Nếu băng thông mạng không phải là vấn đề đối với bạn (nhưng CPU thì có), bạn có thể chuyển toàn bộ tệp bằng tùy chọn rsync -W. Điều này sẽ tăng tốc quá trình rsync vì nó không phải thực hiện kiểm tra tổng ở nguồn và đích.

# rsync -avzW thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp
Password:
receiving file list ... done
./
Basenames
Conflictname
Dirnames
Filemd5s
Group
Installtid
Name
sent 406 bytes received 15810211 bytes 2874657.64 bytes/sec
total size is 45305958 speedup is 2.87

Hướng dẫn rsync bổ sung

  • Cách thiết lập Rsync với SSH trên UNIX / Linux (rsync không cần mật khẩu)
  • 6 ví dụ về rsync để loại trừ nhiều tệp và thư mục bằng cách sử dụng loại trừ