Rsync 秒殺一切備份工具,你能手動(dòng)屏蔽某些目錄嗎?
引言
Rsync 是一種快速且通用的命令行實(shí)用程序,可通過(guò)遠(yuǎn)程shell在兩個(gè)位置之間同步文件和文件夾。
使用 Rsync,可以鏡像數(shù)據(jù),創(chuàng)建增量備份,并在系統(tǒng)之間復(fù)制文件。復(fù)制數(shù)據(jù)時(shí),你可能要根據(jù)文件名或位置排除一個(gè)或多個(gè)文件或目錄。
在本文中,我們將展示如何使用rsync排除文件和目錄。
準(zhǔn)備工作
先簡(jiǎn)要說(shuō)一下 rsync 的工作流程和使用方法。
在下面的示例中,我們使用rsync 的-a選項(xiàng),這會(huì)遞歸同步目錄,傳輸特殊設(shè)備和塊設(shè)備,并保留符號(hào)鏈接,修改時(shí)間,組,所有權(quán)和權(quán)限。
當(dāng)排除文件或目錄時(shí),需要使用它們到源目錄的相對(duì)路徑。
有兩個(gè)選項(xiàng)可以指定要排除的文件和目錄:
- 在命令行中,使用–exclude選項(xiàng)。
- 在文件中,使用–exclude-from選項(xiàng)。
排除特定文件
要排除特定文件,請(qǐng)將文件的相對(duì)路徑傳遞給該–exclude選項(xiàng)。在以下示例中,文件 src_directory/file.txt 將不會(huì)被傳輸:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/
如果要排除目錄內(nèi)容但不排除目錄本身,請(qǐng)使用dir1/*代替dir1:
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/
排除多個(gè)文件或目錄
要排除多個(gè)文件或目錄,只需指定多個(gè)–exclude選項(xiàng):
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/
如果您希望使用單個(gè)--exclude
選項(xiàng),則可以用 {}
將要排除的文件和目錄列出,并用逗號(hào)分隔,如下所示:
rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/
如果要排除的文件和/或目錄的數(shù)量很多,則—exclude可以使用要在文件中排除的文件和目錄,而不是使用多個(gè)選項(xiàng)。只需將文件傳遞給該—exclude-from選項(xiàng)。
下面的命令與上面的命令完全相同:
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
在 exclude-file.txt 內(nèi)存儲(chǔ)這些內(nèi)容:
file1.txt dir1/* dir2
根據(jù)正則模式排除多個(gè)文件或目錄
使用rsync,你還可以根據(jù)與文件或目錄名稱匹配的模式排除文件和目錄。
例如,要排除所有.jpg
文件,請(qǐng)運(yùn)行:
rsync -a --exclude '*.jpg*' src_directory/ dst_directory/
排除與特定模式匹配的文件和目錄之外的其他所有文件和目錄并不困難。假設(shè)你要排除所有其他文件和目錄,但以 .jpg 結(jié)尾的文件除外。
一種選擇是使用以下命令:
rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/
使用多個(gè)include/exclude
選項(xiàng)時(shí),將應(yīng)用第一個(gè)匹配規(guī)則。參數(shù)含義:
--include='*.jpg'
首先,我們包括所有.jpg文件。--include='*/'
然后,我們將所有目錄都包含在in src_directory目錄中。沒(méi)有這個(gè)rsync只會(huì)復(fù)制*.jpg頂級(jí)目錄中的文件。-m
刪除空目錄
另一個(gè)選擇是將 find 命令的輸出傳遞給 rsync:
find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_director
參數(shù)含義:
-printf %P\\0\\n
將 從src_directory/文件路徑中刪除。--files-from=-
表示僅包含來(lái)自標(biāo)準(zhǔn)輸入的文件(從find命令傳遞的文件)。
如果第一張方式難以掌控的話,那么這個(gè) find 指令所做的篩選,對(duì)于運(yùn)維同學(xué)應(yīng)該友好的多了。
寫(xiě)在最后
rsync 一旦數(shù)量使用了之后,甚至應(yīng)該替代 scp ,成為我們?nèi)粘T诒镜氐椒?wù)器,服務(wù)器之間,目錄和文件同步的標(biāo)準(zhǔn)工具。
到此這篇關(guān)于Rsync 秒殺一切備份工具,你能手動(dòng)屏蔽某些目錄嗎?的文章就介紹到這了,更多相關(guān)Rsync手動(dòng)屏蔽目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux下使用ssh遠(yuǎn)程執(zhí)行命令批量導(dǎo)出數(shù)據(jù)庫(kù)到本地
這篇文章主要介紹了linux下使用ssh遠(yuǎn)程執(zhí)行命令批量導(dǎo)出數(shù)據(jù)庫(kù)到本地,需要的朋友可以參考下2015-04-04CentOS7運(yùn)行.sh腳本提示syntax error: unexpected end of file的解決方法
這篇文章主要介紹了解決執(zhí)行腳本報(bào)syntax error: unexpected end of file或syntax error near unexpected token fi錯(cuò)誤的問(wèn)題,需要的朋友可以參考下2020-02-02shell腳本實(shí)現(xiàn)數(shù)據(jù)庫(kù)表增量同步的流程
這篇文章主要介紹了shell腳本實(shí)現(xiàn)數(shù)據(jù)庫(kù)表增量同步的流程,流程也很簡(jiǎn)單,通過(guò)獲取axt_statistics 庫(kù)的 zxxt_class 表中id字段的最大id值,具體腳本跟隨小編一起看看本文吧2021-10-10putty實(shí)現(xiàn)自動(dòng)登錄的方法(ssh和ssh2)
這篇文章主要介紹putty實(shí)現(xiàn)自動(dòng)登錄的方法,需要的朋友可以參考下2013-02-02Shell腳本中單引號(hào)(‘)和雙引號(hào)(“)的使用區(qū)別
這篇文章主要介紹了Shell腳本中單引號(hào)(‘)和雙引號(hào)(“)的使用區(qū)別,主要探討了變量在單引號(hào)和雙引號(hào)中的不同,需要的朋友可以參考下2014-06-06