rsync
命令說明:
--exclude:上傳/刪除失效
上傳時:不上傳指定文件/目錄
刪除時:不刪除指定文件/目錄
--delete:刪除所有上傳目錄不存在的文件/目錄,但是,不刪除任何目標文件在exclude中的文件/目錄
--delete-exclude:將--exclude功能設置爲只針對上傳,刪除時失效。即刪除目標路徑中所有上傳目錄不存在的文件/目錄,但是所有exclude中的內容都生效,特別危險。建議使用修飾符-s方式。
-n選項:預先檢查本次刪除操作涉及到的文件
--include/exclude中修飾符
-s:設置exclude中的排除只針對上傳,刪除失效
實驗:
src:上傳機器
desc:目標機器
exclude:上傳和刪除都排除某個pattern(*.sh)
-n選項:預先檢查本次刪除操作涉及到的文件
需求:
a、上傳時,src機器不上傳*.sh和*.txt文件,使用exclude實現
b、只刪除desc中src不存在的*.sh文件並清除相關目錄,即*.txt文件不受影響。
如下圖所示,我想刪除desc機器中conkg/tsh/test.sh同時刪除conkg/tsh文件夾:
注意:實驗時,默認加上-n選項,只查看不刪除。
1、使用--delete命令時,發現並不會能夠刪除conkg/tmp文件夾和test.sh文件:
rsync -rvz --exclude-from del.txt -n --delete conkg [email protected]:/home/kg/tmp
2、使用--delete-excluded,發現desc中所有src中不存在的*.sh和*.txt文件都被刪除了
rsync -rvz --exclude-from del.txt -n --delete-excluded conkg [email protected]:/home/kg/tmp
3、使用-s修飾符效果:看到只會刪除tsh文件夾和test.sh文件
可以看到desc機器中tsh文件夾和test.sh文件都被刪除了