幫你精通Linux:完全解析Rsync命令的17個(gè)備份選項(xiàng)
常常備份是良好的習(xí)慣,只是這么好習(xí)慣只有在無數(shù)次的頓足捶胸、呼天搶地的懊惱之后,才會(huì)勉勉強(qiáng)強(qiáng)慢慢地養(yǎng)成,備份最常用的命令是:
- rsync -avl source destination
此處的短選項(xiàng) a 是長選項(xiàng)--archive 的簡寫形式。然而,如果我們要系統(tǒng)搬家的時(shí)候備份所有的資料,謹(jǐn)慎用 -a 選項(xiàng)。因?yàn)槿绻谛孪到y(tǒng)上換了新的用戶名,會(huì)導(dǎo)致你打不開用 -a 選型備份的所有資料。
為什么呢?
1)便捷卻不簡單的--Archive 選項(xiàng)
選項(xiàng)--archive看似僅僅代表一個(gè)指示條件,其實(shí)質(zhì)卻是多個(gè)高頻選項(xiàng)的快捷鍵:
- rsync -a #等價(jià)于 -rlptgoD
換言之,-a這一個(gè)option,相當(dāng)于添加了-rlptgoD這七個(gè)options。引言中提出的問題,癥結(jié)就在這里。
- -p --perms # 保留權(quán)限
- -o --owner # 保留owner
- -g --group # 同步組
上面的三個(gè)選項(xiàng),分別同步文件的額權(quán)限,屬主和屬組;后果是,我們只能用當(dāng)前的用戶查看所有備份的資料。切換用戶之后,則沒有對應(yīng)權(quán)限查看。
因此,我們重裝系統(tǒng)備份所有資料的時(shí)候,要慎用-a 選項(xiàng)。
2)常用的基本選項(xiàng)
rsync 的基礎(chǔ)選項(xiàng)有:
- -v --verbose # 在終端中報(bào)告當(dāng)前的進(jìn)度
- -r --recursive # 遞歸模式
- -t --times # 同步時(shí)間戳
- -I --ignore-times # 不同步時(shí)間戳
- -l --links # 創(chuàng)建軟連接
- -L, --copy-links # 復(fù)制軟連接所指向的位置
- -z, --compress # 允許壓縮
- -d, --dirs # 只備份目錄樹結(jié)構(gòu)
以上8個(gè)option是rsync命令的基礎(chǔ)部分。
3)排除和包含特定的文件與目錄
同步的過程中,我們常常需要排除掉dot文件,比如.git.ssh等,exclude命令就有了用武之地
- --exclude={.ssh,.git,.config}
--exclude-from=FILE選項(xiàng)提供了更貼心的服務(wù),我們可以將經(jīng)常要排除掉的目錄寫進(jìn)專門的文件。此文件中,我們可以應(yīng)用#和;備注,rsync命令會(huì)自動(dòng)忽略,同時(shí)也會(huì)跳過空白行。
與‘exclude’相對應(yīng)的是 ‘include’。如果不使用 {},我們可以寫成多行的模式:
- rsync -av ~/Documents \
- --include=~/Public \
- --include=~/Music \
- --include=~/Videos \
- --include=~/Downloads \
- /media/spiritme/disk/
除了include 和exclude 之外,rsync還準(zhǔn)備了根據(jù)文件的大小實(shí)施篩選的選項(xiàng):
- --max-size=SIZE # 篩選掉大于此SIZE的文件
- --min-size=SIZE # 排除掉小于此SIZE的文件
4)rsync 命令的核心
--update 選項(xiàng)是rsync命令的靈魂。根據(jù)rsync十分貼心的算法,destination 中時(shí)間戳晚于source中的文件不會(huì)被覆蓋掉。
與 --update 選項(xiàng)協(xié)同作戰(zhàn)的還有--delete選項(xiàng),將刪除掉destination中多余的目錄與文件。
與--delete 呼應(yīng)的是--existing 選項(xiàng),只同步在目標(biāo)位置存在的文件,而不創(chuàng)建新的文件。
以上三個(gè)選項(xiàng)乃是rsync命令的核心部分。
我們還可以更好的監(jiān)控rsync的工作進(jìn)度以及生成最終的報(bào)告。
--progress會(huì)打印檔期的進(jìn)度
- 782448 63% 110.64kB/s 0:00:04 # 與 -h 搭配使用
-i, --itemize-changes將生成所有變更的報(bào)告。
5)改變 rsync 算法的選項(xiàng)
-W, --whole-file選項(xiàng)會(huì)改變r(jià)sync的算法。關(guān)閉其默認(rèn)的 delta-transfer algorithm,而將文件整體移動(dòng)。當(dāng)然如果是在本地執(zhí)行rsync,-W 則是默認(rèn)行為。
-c, --checksum選項(xiàng)將改變r(jià)sync默認(rèn)的‘quick-check’算法。
6)收尾總結(jié)
我們從具體問題‘rsync-a' 命令導(dǎo)致的權(quán)限問題出發(fā),遵循循序漸進(jìn)的邏輯分別探討了:
1)快捷方式 rsync -a2)常用的8個(gè)基本選項(xiàng)3)排除和包含特定的文件與目錄的方法4)rsync 命令的核心5)改變 rsync 算法的選項(xiàng)
