Linux 中 rsync 備份資料使用例項

大雄45發表於2021-07-22

rsync工具用於將檔案和目錄從一個位置同步到另一個位置。同步的位置可以在本地伺服器或遠端伺服器上。接下來教大家在 中rsync備份資料使用例項

中使用下面 安裝 rsync:

[root@localhost ~]# yum -y install rsync

例項一:本機中的兩個目錄進行同步

要同步本地計算機中的兩個目錄,使用 rsync -zvr

[root@localhost ~]# rsync -zvr /var/log/ /root/temp/

sending incremental file list

btmp

dnf.librepo.log

...

sssd/sssd_implicit_files.log

sssd/sssd_nss.log

tuned/tuned.log

 

sent 516,136 bytes  received 605 bytes  1,033,482.00 bytes/sec

total size is 5,451,242  speedup is 10.55

引數解釋:

·  -z 啟用壓縮

·  -v 輸出詳細資訊

·  -r 表示遞迴

檢視一下 /root/temp目錄,發現rsync在同步期間未保留時間戳。

例項二:使用 rsync -a在同步期間保留時間戳

rsync命令的 -a 選項表示存檔模式。 -a 選項遞迴同步、保留符號連結、保留許可權、保留時間戳、保留所有者和組。

現在,執行以下命令,然後檢視檔案的時間:

[root@localhost ~]# rsync -azv /var/log/ /root/temp/

sending incremental file list

./

btmp

dnf.librepo.log

dnf.log

dnf.rpm.log

...

sssd/sssd_nss.log

tuned/

tuned/tuned.log

 

sent 516,231 bytes  received 629 bytes  1,033,720.00 bytes/sec

total size is 5,451,789  speedup is 10.55

如下所示, rsync在同步期間保留了時間戳。

例項三:將檔案從本地同步到遠端目錄

rsync允許在本地和遠端系統之間同步檔案/目錄,前提是本地和遠端系統都要安裝rsync才行,否則會提示如下資訊:

[root@localhost ~]# rsync -avz /root/temp/ root@192.168.43.137:/root/temp

root@192.168.43.137's password:

sending incremental file list

created directory /root/temp

./

btmp

dnf.librepo.log

dnf.log

dnf.rpm.log

...

sssd/sssd_nss.log

tuned/

tuned/tuned.log

 

sent 516,231 bytes  received 662 bytes  206,757.20 bytes/sec

total size is 5,451,789  speedup is 10.55


下面是在遠端系統裡面檢視已同步的目錄:
上面可以看到同步時需要輸入密碼,有時候不希望將檔案從本地伺服器備份到遠端伺服器時輸入密碼,可以在兩臺主機間設定免密要登入。

例項四:將檔案從遠端目錄同步到本地

要將檔案從遠端系統同步到本地時,如下所示,在源中指定遠端路徑,在目標中指定本地路徑即可:

[root@localhost ~]# rsync -avz root@192.168.43.137:/root/temp /root/temp

root@192.168.43.137's password:

receiving incremental file list

temp/

temp/btmp

temp/dnf.librepo.log

temp/dnf.log

...

temp/tuned/

temp/tuned/tuned.log

 

sent 634 bytes  received 516,247 bytes  206,752.40 bytes/sec

total size is 5,451,789  speedup is 10.55

 

例項五:不要覆蓋目標位置上已修改的檔案

如果在目標位置修改了檔案,我們可能不想用源位置的舊檔案覆蓋該檔案。使用 -u 選項就可以做到這一點。在下面的示例中,在本地將 test.txt檔案修改了內容。它不會被遠端系統的test.txt檔案所覆蓋:

# 檢視一下遠端系統 temp 目錄下的 test.txt 檔案大小

[root@localhost ~]# ssh root@192.168.43.137 ls -l /root/temp

root@192.168.43.137's password:

total 4

-rw-r--r--. 1 root root 7 Apr  7  2021 test.txt

# 檢視一下本機的 temp 目錄下的 test.txt 檔案大小,本機的 test.txt 檔案已修改,所以比遠端系統裡面的 test.txt 檔案大

[root@localhost ~]# ll /root/temp/

total 4

-rw-r--r--. 1 root root 77 Apr  7 21:10 test.txt

# 執行 rsync -avzu 同步一下

[root@localhost ~]# rsync -avzu root@192.168.43.137:/root/temp /root/

root@192.168.43.137's password:

receiving incremental file list

 

sent 25 bytes  received 76 bytes  40.40 bytes/sec

total size is 7  speedup is 0.07

下面檢視一下本機的 /root/temp目錄裡面的test.txt是否被覆蓋:
發現並沒有被覆蓋。

例項六:在傳輸過程中檢視 rsync進度

使用 --progress 選項顯示 rsync執行的詳細進度,如下所示:

[root@localhost ~]# rsync -avz --progress /root/temp/ root@192.168.43.137:/root/temp

 

例項七:在目標目錄中刪除源目錄不存在的檔案

如果檔案不在源中而是在目標中存在,則可能希望在 rsync同步期間刪除目標上的檔案。在這種情況下,請使用 --delete 選項:

# 檢視一下源目錄裡面的檔案

[root@localhost ~]# ll /root/temp/

total 0

-rw-r--r--. 1 root root 0 Apr  7 21:46 name.csv

# 檢視一下目標目錄裡面的檔案

[root@localhost ~]# ssh root@192.168.43.137 ls -l /root/temp

root@192.168.43.137's password:

total 944

drwxr-xr-x. 2 root root      6 Apr  7  2021 anaconda

drwx------. 2 root root      6 Apr  7  2021 audit

-rw-------. 1 root root      0 Apr  7  2021 btmp

-rw-------. 1 root root      0 Apr  7  2021 btmp-20210406

drwxr-xr-x. 2 root root      6 Apr  7  2021 chrony

-rw-------. 1 root root   8432 Apr  7  2021 cron

-rw-------. 1 root root  12200 Apr  7  2021 cron-20210221

-rw-------. 1 root root  48130 Apr  7  2021 cron-20210228

-rw-------. 1 root root   3910 Apr  7  2021 cron-20210308

-rw-------. 1 root root  22455 Apr  7  2021 cron-20210406

-rw-------. 1 root root 383369 Apr  7  2021 dnf.librepo.log

-rw-------. 1 root root 476949 Apr  7  2021 dnf.librepo.log-20210221

# rsync 使用 --delete 選項刪除目標目錄中不包含源目錄的檔案

[root@localhost ~]# rsync -avz --delete /root/temp root@192.168.43.137:/root

root@192.168.43.137's password:

sending incremental file list

deleting temp/chrony/

deleting temp/audit/

deleting temp/anaconda/

deleting temp/dnf.librepo.log-20210221

deleting temp/dnf.librepo.log

deleting temp/cron-20210406

deleting temp/cron-20210308

deleting temp/cron-20210228

deleting temp/cron-20210221

deleting temp/cron

deleting temp/btmp-20210406

deleting temp/btmp

temp/

temp/name.csv

 

sent 123 bytes  received 281 bytes  161.60 bytes/sec

total size is 0  speedup is 0.00


在檢視一下目標目錄是否刪除:


例項八:檔案傳輸過程中的 include和exclude模式

rsync允許在進行同步時提供要包括和排除檔案或目錄的模式。

[root@localhost ~]# rsync -avz --include 'P*' --exclude '*' root@192.168.43.137:/var/lib/rpm/ /root/temp/

在上面的示例中,它僅包括以 'P'開頭的檔案或目錄,並排除所有其他檔案。

例項九:不傳輸大檔案

可以使用 rsync --max-size 選項告訴 rsync不要傳輸大於指定大小的檔案。

[root@localhost ~]# rsync -avz --max-size='1M' root@192.168.43.137:/var/lib/rpm/ /root/temp/

--max-size=1M 使 rsync僅傳輸小於或等於1M的檔案。單位可以是K,M,G等。

還可以使用 --min-size= 引數,指定傳輸最小檔案的大小。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2782688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章