Linux使用rsync備份到Synology NAS
將數(shù)據(jù)從Linux設(shè)備備份到Synology NAS
- 將數(shù)據(jù)從Linux設(shè)備備份到Synology NAS的最常見(jiàn)方法是使用rsync來(lái)制作鏡像文件夾。您可能需要使用事先裝載的CIFS或NFS將Synology NAS上的文件夾裝載到Linux設(shè)備。此命令為:
[root@www ~]# rsync -av [source_folder] [destination_folder]
[root@www ~]# rsync -av /home /backupdata/- 或者,您只需在Linux設(shè)備上執(zhí)行以下命令,而無(wú)需裝載該文件夾。在以下示例中, 192.168.55.66應(yīng)替換為Synology NAS的IP地址。如果要將數(shù)據(jù)備份到默認(rèn)文件夾以外的任何文件夾,則NetBackup應(yīng)替換為NAS上的目的地共享文件夾:
rsync -av home/ admin@192.168.55.66::NetBackup/backupdata/- 數(shù)據(jù)備份還可以通過(guò)在命令中插入-e ssh來(lái)加密:
rsync -av -e ssh home/ admin@192.168.55.66::NetBackup/backupdata/- 當(dāng)rsync運(yùn)行時(shí),它將比較Synology NAS和Linux設(shè)備之間的數(shù)據(jù)。僅傳輸修改的文件以節(jié)省時(shí)間。此外,您可以使用Linux備份腳本進(jìn)行每日備份
方法一:Linux同步到NAS
示例代碼:
rsync -av -e ssh /home colin@192.168.1.6:: public /backup
方法二:群暉的Active Backup for Business自動(dòng)同步備份
使用群暉的Active Backup for Business,選擇文件服務(wù)器-添加服務(wù)器,選擇rsync服務(wù)器
注:黑群暉安裝ActiveBackupforBusiness并激活參考



輸入需要備份的linux服務(wù)器的ip地址、用戶(hù)名、密碼、連接模式

選擇備份模式

備份模式介紹:
多版本:每次運(yùn)行備份時(shí)都會(huì)在備份目的地創(chuàng)建新的版本文件夾
鏡像:在備份目的地創(chuàng)建源數(shù)據(jù)的鏡像副本
增量:每次執(zhí)行任務(wù),新增加的文件以及修改的文件備份到目的地,并覆蓋原來(lái)的文件,未修改的文件將不備份。
選擇需要備份的文件夾

填寫(xiě)任務(wù)名稱(chēng)和目的地的路徑,以及執(zhí)行任務(wù)的時(shí)間和頻次,請(qǐng)根據(jù)自己需求選擇。


任務(wù)執(zhí)行



文件備份檢查

- 1. rsync 簡(jiǎn)介
- 2. rsync的重要特性
- 3. 用法
- 4. 示例
- 4.1. 示例 1. 同步同一臺(tái)機(jī)上的兩個(gè)目錄
- 4.2. 示例 2: 保留文件的時(shí)間戳
- 4.3. 示例 3: 拷貝單個(gè)文件
- 4.4. 示例 4. 從本地拷貝多個(gè)文件到遠(yuǎn)端
- 4.5. 示例 5. 從遠(yuǎn)程服務(wù)器拷貝文件到本地
- 4.6. 示例 6. Remote shell for Synchronization
- 4.7. 示例 7. 拷貝時(shí)不覆蓋目標(biāo)位置已修改過(guò)的文件
- 4.8. 示例 8. 僅拷貝目錄結(jié)構(gòu), 不拷貝文件
- 4.9. 示例 9. 文件傳輸時(shí)顯示進(jìn)度
- 4.10. 示例 10. 同步時(shí)刪除目標(biāo)位置多余的文件或目錄
- 4.11. 示例 11. Do not Create New File at the Target
- 4.12. 示例 12. 查看目標(biāo)位置和源位置之間的差異
- 4.13. 示例 13. 使用通配符過(guò)濾文件
- 4.14. 示例 14. 不拷貝大文件
- 4.15. 示例 15. 拷貝整個(gè)文件
- 5. 參考文檔
1. rsync 簡(jiǎn)介
rsync 就是遠(yuǎn)程同步的意思remote sync.
rsync 被用在UNIX / Linux執(zhí)行備份操作操作.
rsync 工具包被用來(lái)從一個(gè)位置到另一個(gè)位置高效地同步文件和文件夾. rsync可以實(shí)現(xiàn)在同一臺(tái)機(jī)器的不同文件直接備份,也可以跨服務(wù)器備份.
2. rsync的重要特性
- 速度快: 初次同步時(shí), rsync會(huì)全量拷貝從源文件或目錄到目標(biāo)位置. 第二次往后同步時(shí), rsync 僅僅會(huì)拷貝變化的數(shù)據(jù)塊或字節(jié)到目標(biāo)位置這將使得文件傳輸非常迅速.
- 安全: rsync 可以使用ssh協(xié)議加密傳輸.
- 占用帶寬少: rsync 在發(fā)送時(shí)會(huì)壓縮數(shù)據(jù)塊, 接收后再解壓縮數(shù)據(jù)塊. 所以和其他文件傳輸協(xié)議比起來(lái), rsync在跨主機(jī)傳輸文件時(shí)會(huì)占用較小的帶寬.
- 不需要特殊權(quán)限: 安裝和運(yùn)行rsync 不需要特殊權(quán)限.
3. 用法
rsync 語(yǔ)法如下
$ rsync [OPTION]... SRC [SRC]... DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or rsync [OPTION]... [USER@]HOST:SRC [DEST]
or rsync [OPTION]... [USER@]HOST::SRC [DEST]
or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
從語(yǔ)法結(jié)構(gòu)我們可以看出, 源和目標(biāo)即可以在本地也可以在遠(yuǎn)端. 如果是遠(yuǎn)端的話(huà),需要指明登錄用戶(hù)名, 遠(yuǎn)端服務(wù)器名, 和遠(yuǎn)端文件或目錄. 同時(shí)源可以是多個(gè), 目標(biāo)位置只能是一個(gè).
4. 示例
4.1. 示例 1. 同步同一臺(tái)機(jī)上的兩個(gè)目錄
$ 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
$
說(shuō)明:
-z: --compress 使用壓縮機(jī)制
-v: --verbose 打印詳細(xì)信息
-r: --recursive 以遞歸模式同步子目錄
注意: 同步完成后, 我們會(huì)發(fā)現(xiàn)文件的時(shí)間戳timestamps發(fā)生了改變.
$ 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
4.2. 示例 2: 保留文件的時(shí)間戳
有時(shí)我們希望拷貝或同步時(shí), 時(shí)間戳不要發(fā)生變化, 源文件是什么時(shí)間戳,目標(biāo)文件就是什么時(shí)間戳, 這時(shí)我們需要使用 -a --archive 歸檔模式選項(xiàng). -a 選項(xiàng)相當(dāng)于7個(gè)選項(xiàng)的組合 -rlptgoD
-r, --recursive: 遞歸模式Recursive mode
-l, --links: 將符號(hào)鏈接當(dāng)作符號(hào)鏈接文件拷貝, 不拷貝符合鏈接指向的文件內(nèi)容.
-p, --perms: 保留文件權(quán)限
-t, --times: 保留修改時(shí)間戳
-g, --group: 保留用戶(hù)組信息
-o, --owner: 保留用戶(hù)信息(需要超級(jí)用戶(hù)權(quán)限)
-D, 相當(dāng)于 --devices --specials 的組合, 保留設(shè)備文件, 保留特殊文件.
$ 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
$
同步完成后, 我們?cè)賮?lái)看文件屬性, 時(shí)間戳信息得到了保留, 不僅如此文件的所有者 和所在組也得到保留.
$ 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
4.3. 示例 3: 拷貝單個(gè)文件
$ 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
說(shuō)明: Pubkeys 是一個(gè)普通文件
4.4. 示例 4. 從本地拷貝多個(gè)文件到遠(yuǎn)端
使用rsync, 也可以從本地拷貝多個(gè)文件或目錄到遠(yuǎn)端, 以下即為示例:
$ 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
注意:
與本地文件拷貝不同的地方在于, 當(dāng)拷貝文件到遠(yuǎn)程服務(wù)器時(shí), 我們指定遠(yuǎn)程主機(jī)上的用戶(hù)名, 服務(wù)器地址, 路徑等信息, 類(lèi)是于使用scp命令拷貝, 如果沒(méi)有設(shè)置ssh免密碼登錄我們還需要提供遠(yuǎn)程用戶(hù)的密碼等信息.有時(shí)你不想頻繁輸入密碼, 或者rsync運(yùn)行在一個(gè)無(wú)人執(zhí)守的腳本里面, 這是需要預(yù)先設(shè)置ssh免密登錄, 或者使用結(jié)合expect命令,自動(dòng)輸入密碼, 但是出于安全考慮, 密碼需要加密. 所以在條件許可的情況下, 還是推薦設(shè)置ssh免密登錄.
4.5. 示例 5. 從遠(yuǎn)程服務(wù)器拷貝文件到本地
與示例 4 稍有不同, 這時(shí)遠(yuǎn)端目錄或文件作為源位置, 本地目錄或文件作為目標(biāo)位置, 示例如下:
$ 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
4.6. 示例 6. Remote shell for Synchronization
rsync 允許指定遠(yuǎn)程主機(jī)上運(yùn)行shell命令.
這時(shí)需要使用 -e 選項(xiàng):
-e, --rsh=COMMAND 指定遠(yuǎn)端使用的shell命令
Use rsync -e ssh to specify which remote shell to use. In this case, rsync will use 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
4.7. 示例 7. 拷貝時(shí)不覆蓋目標(biāo)位置已修改過(guò)的文件
在一下特殊的使用場(chǎng)景中, 我們不希望拷貝文件時(shí), 我們不希望拷貝過(guò)程覆蓋掉目標(biāo)位置中用戶(hù)做出的修改. 這時(shí)我們需要使用 -u 選項(xiàng)明確的告訴rsync命令保留用戶(hù)在目標(biāo)文件中作出的修改. 在下面的例子中, 文件Basenames是用戶(hù)基于上次的拷貝, 修改過(guò)的文件, 當(dāng)我們使用了-u 選項(xiàng)后, 該文件中的修改將不會(huì)被覆蓋掉.
$ 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
4.8. 示例 8. 僅拷貝目錄結(jié)構(gòu), 不拷貝文件
在某些特殊場(chǎng)景中, 我們只需要遠(yuǎn)程服務(wù)器上的目錄結(jié)構(gòu), 而不希望花大量時(shí)間, 帶寬拷貝文件內(nèi)容, 這時(shí)我們可以使用 -d, --dirs選項(xiàng)來(lái)達(dá)到目的.
$ 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
4.9. 示例 9. 文件傳輸時(shí)顯示進(jìn)度
有時(shí)我們希望拷貝文件時(shí), 能實(shí)時(shí)的顯示拷貝進(jìn)度, 以及傳輸速率等信息. 尤其是拷貝大文件時(shí), 程序不輸出信息, 用戶(hù)往往無(wú)法區(qū)分程序是在響應(yīng)中, 還是已經(jīng)掛起, 在這種情況下如果使用 –progress 就會(huì)非常有幫助.
rsync –progress option displays detailed progress of rsync execution as shown below.
$ 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
你也可以使用rsnapshot工具 (rsnapshot會(huì)調(diào)用rsync)來(lái)備份本地linux服務(wù)器, 或者備份遠(yuǎn)程linux服務(wù)器.
4.10. 示例 10. 同步時(shí)刪除目標(biāo)位置多余的文件或目錄
有時(shí)我們希望目標(biāo)文件和源文件保持嚴(yán)格一致, 不要多文件也不要少文件, 這是我們可能需要使用 -delete 選項(xiàng)來(lái)達(dá)到目的. 如果使用 -delete 選項(xiàng), rsync將刪除目標(biāo)位置多余的文件或文件夾. 此選項(xiàng)還可以結(jié)合--delete-excluded 選項(xiàng)一起使用, 添加一些例外的文件.
# 現(xiàn)在Source and target 文件是一致的. 現(xiàn)在讓我們?cè)谀繕?biāo)位置創(chuàng)建一個(gè)新文件.
$ touch 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
上述示例中, new-file.txt 是源文件中沒(méi)有的文件, 其將會(huì)在拷貝時(shí)被刪除掉.
4.11. 示例 11. Do not Create New File at the Target
在某些特殊的場(chǎng)景下, 我們只想更新, 目標(biāo)位置已經(jīng)存在的文件或目錄, 而不關(guān)心源位置的新文件, 這時(shí)我們可以使用-existing 選項(xiàng)僅僅更新已經(jīng)存在的文件.
讓我們來(lái)驗(yàn)證一下這個(gè)選項(xiàng)的功能, 首先在源端添加一個(gè)新文件 new-file.txt.
[/var/lib/rpm ]$ > new-file.txt
Next, execute the rsync from the target.
$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2s password:
receiving file list.. done
sent 26 bytes received 419 bytes 46.84 bytes/sec
total size is 88551424 speedup is 198991.96
從上面的例子可以看到, 由于加了--existing選項(xiàng)新文件new-file.txt沒(méi)有被拷貝到目標(biāo)位置
4.12. 示例 12. 查看目標(biāo)位置和源位置之間的差異
選項(xiàng)-i, --itemize-changes 非常有用, 當(dāng)我們想了解目標(biāo)位置和源位置的文件差異時(shí).
在源端:
$ 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
在目標(biāo)端:
$ 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
注意: 在上面的例子中, 源位置和目標(biāo)位置有兩處差異. 第一, 源文件Basenames的所有者和組 與 目標(biāo)文件不同, 第一Dirnames文件大小也不一樣.
現(xiàn)在讓我們來(lái)看看rsync會(huì)怎樣顯示這些差異
$ 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
輸出信息只在相應(yīng)文件前面顯示了9個(gè)字母來(lái)標(biāo)識(shí)改變, 這些字母具體是什么意思呢? 請(qǐng)參考以下詳細(xì)說(shuō)明
表示文件已經(jīng)被拷貝到了本地
f 代表該項(xiàng)目是一個(gè)文件.
s 代表文件大小發(fā)生了變化.
t 代表時(shí)間戳有差異.
o 所有者有差異
g 所屬組有差異.
4.13. 示例 13. 使用通配符過(guò)濾文件
rsync 可以使用--include 和 --exclude 選項(xiàng)結(jié)合通配符進(jìn)行文件或文件夾過(guò)濾
$ 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
在上面的示例中, 僅僅以P打頭的文件和文件夾被包含了進(jìn)來(lái), 其他的文件都被過(guò)濾在拷貝的過(guò)程中被排除在外了.
4.14. 示例 14. 不拷貝大文件
可以使用--max-size 告訴rsync 不要拷貝大小超過(guò)某個(gè)值的文件, 可以使用K, M, G指定文件大小, M for megabytes and G for gigabytes.
$ 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
4.15. 示例 15. 拷貝整個(gè)文件
rsync 有個(gè)重要優(yōu)點(diǎn)就是, 可以做到在拷貝的過(guò)程中, 只拷貝發(fā)生變化了的部分, 而不是發(fā)送整個(gè)文件.
但是在某些場(chǎng)景中, 比如文件較少, 文件size較小時(shí), 我們的帶寬又足夠大, cpu資源相對(duì)又貧乏, 我們不希望它這樣做, 因?yàn)楫吘褂?jì)算源端和目標(biāo)端的checksum, 并做對(duì)比, 也需要額外cpu開(kāi)銷(xiāo). 這時(shí)我們可以使用 -W, --whole-file 選項(xiàng), 讓rsync不用計(jì)算那么多, 一上來(lái)就直接開(kāi)始傳送文件. 我們可以像下面這么做.
# 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
5. 參考文檔
博客版權(quán):本文以學(xué)習(xí)、記錄、分享為目的。歡迎大家轉(zhuǎn)載,但務(wù)必注明原文地址,謝謝合作!

浙公網(wǎng)安備 33010602011771號(hào)