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文件都被删除了