煉數成金 門戶 大數據 運維 查看內容

Rsync 秒殺一切備份工具,你能手動屏蔽某些目錄嗎?

2020-11-11 16:16| 發布者: 煉數成金_小數| 查看: 24954| 評論: 0|原作者: Rman|來自: 高效運維

摘要: Rsync 是一種快速且通用的命令行實用程序,可通過遠程shell在兩個位置之間同步文件和文件夾。使用 Rsync,可以鏡像數據,創建增量備份,并在系統之間復制文件。復制數據時,你可能要根據文件名或位置排除一個或多個 ...
引言
Rsync 是一種快速且通用的命令行實用程序,可通過遠程shell在兩個位置之間同步文件和文件夾。
使用 Rsync,可以鏡像數據,創建增量備份,并在系統之間復制文件。復制數據時,你可能要根據文件名或位置排除一個或多個文件或目錄。
在本文中,我們將展示如何使用rsync排除文件和目錄。

準備工作
先簡要說一下 rsync 的工作流程和使用方法。
在下面的示例中,我們使用rsync 的-a選項,這會遞歸同步目錄,傳輸特殊設備和塊設備,并保留符號鏈接,修改時間,組,所有權和權限。
當排除文件或目錄時,需要使用它們到源目錄的相對路徑。
有兩個選項可以指定要排除的文件和目錄:
在命令行中,使用--exclude選項。
在文件中,使用--exclude-from選項。

排除特定文件
要排除特定文件,請將文件的相對路徑傳遞給該--exclude選項。在以下示例中,文件 src_directory/file.txt 將不會被傳輸:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/

排除特定目錄
排除特定目錄與排除文件相同,只需將目錄的相對路徑傳遞給該--exclude選項,如下所示:
rsync -a --exclude 'dir1' src_directory/ dst_directory/

如果要排除目錄內容但不排除目錄本身,請使用dir1/*代替dir1:
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

排除多個文件或目錄
要排除多個文件或目錄,只需指定多個--exclude選項:
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

如果您希望使用單個--exclude選項,則可以用{}將要排除的文件和目錄列出,并用逗號分隔,如下所示:
rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

如果要排除的文件和/或目錄的數量很多,則—exclude可以使用要在文件中排除的文件和目錄,而不是使用多個選項。只需將文件傳遞給該—exclude-from選項。

下面的命令與上面的命令完全相同:
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/

在 exclude-file.txt 內存儲這些內容:
file1.txt
dir1/*
dir2

根據正則模式排除多個文件或目錄
使用rsync,你還可以根據與文件或目錄名稱匹配的模式排除文件和目錄。

例如,要排除所有.jpg文件,請運行:
rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

排除與特定模式匹配的文件和目錄之外的其他所有文件和目錄并不困難。假設你要排除所有其他文件和目錄,但以 .jpg 結尾的文件除外。

一種選擇是使用以下命令:
rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

使用多個 include/exclude 選項時,將應用第一個匹配規則。參數含義:
--include='*.jpg'-首先,我們包括所有.jpg文件。
--include='*/'然后,我們將所有目錄都包含在in src_directory目錄中。

沒有這個rsync只會復制*.jpg較高級目錄中的文件。
-m -刪除空目錄
另一個選擇是將 find 命令的輸出傳遞給 rsync:
find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

參數含義:
-printf %P\\0\\n 將從src_directory/文件路徑中刪除。
--files-from=- 表示僅包含來自標準輸入的文件(從find命令傳遞的文件)。
如果第一張方式難以掌控的話,那么這個 find 指令所做的篩選,對于運維同學應該友好的多了。

寫在最后
rsync 一旦數量使用了之后,甚至應該替代 scp ,成為我們日常在本地到服務器,服務器之間,目錄和文件同步的標準工具。

聲明:文章收集于網絡,版權歸原作者所有,為傳播信息而發,如有侵權,請聯系小編刪除,謝謝!

歡迎加入本站公開興趣群
軟件開發技術群
興趣范圍包括:Java,C/C++,Python,PHP,Ruby,shell等各種語言開發經驗交流,各種框架使用,外包項目機會,學習、培訓、跳槽等交流
QQ群:26931708

Hadoop源代碼研究群
興趣范圍包括:Hadoop源代碼解讀,改進,優化,分布式系統場景定制,與Hadoop有關的各種開源項目,總之就是玩轉Hadoop
QQ群:288410967 

鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

熱門頻道

  • 大數據
  • 商業智能
  • 量化投資
  • 科學探索
  • 創業

 

GMT+8, 2020-12-24 05:56 , Processed in 0.171930 second(s), 27 queries .

(*^▽^*)MG黑暗故事游戏规则 以太坊交易规则 好彩网 重庆百变王牌直播开奖 辽宁快乐12预测网站 新世界棋牌骗局 腾讯天天麻将充值 排列三排列五开奖历史 海南福利彩票中心 山东快乐扑克三开奖 秒速赛车游戏规则技巧 如何理财投资 内蒙古时时彩走势全图一Welcome 高手靠3d赚钱 北京快乐8计划 辛运28开奖 陕西快乐十分前三组选