是否有任何 rsync 命令可以从 rsync 共享中完全删除某些远程目录?我的意思是不仅删除目录内容,还删除目录本身。并且无需重新同步整个父目录,因为它可能非常大。
答案1
回答我自己的问题...事实上,可以从远程服务器完全删除目录(包括目录本身)。检查下面的示例:
rsync -r --delete --include 'x/***' --exclude '*' local_empty_directory/ rsync://some_server/some_share/x_parent_directory
关键是使用本地空目录清理父目录x
(x_parent_directory
例如),local_empty_directory
同时使用--exclude '*'
并仅包含我们要删除的目录(x
例如)及其内容来排除所有内容--include 'x/***'
。
答案2
跟随 rsync 的 man 你可以使用 --exclude
--排除=模式
此选项是 --filter 选项的简化形式,默认为排除规则,并且不允许正常过滤规则的完整规则解析语法。
--从=文件中排除
此选项与 --exclude 选项相关,但它指定包含排除模式(每行一个)的 FILE。文件中的空行和以“;”开头的行或“#”被忽略。如果 FILE 为 -,则将从标准输入读取列表。
答案3
您无法使用 rsync 删除远程目录。你能做的最好的事情就是删除全部文件在远程目录中,使用“--remove-source-files”选项。从手册页:
这告诉 rsync 从发送端删除属于传输一部分且已在接收端成功复制的文件(即非目录)。
或者,您可以简单地通过 SSH 发出 rm 命令,例如:
ssh root@remote_ip -c "rm -rf /somedir"