解决 rsync 无法删除文件夹问题。
1.rsync 无法删除文件夹
有一个同步服务一直报cannot delete non-empty directory错误,具体表现为source_dir删除了的文件夹,在target_dir无法删除。
- target_dir:
1
2
3
4
5ideavim/
├── detekt
├── doc
├── gradle
├── resourc - source_dir:rsync 同步:
1
2
3
4ideavim/
├── detekt
├── doc
├── gradle然后就报这个错误了:1
rsync -azv --delete -exclude-from=/tmp/exlcude.txt source_dir target_dir
cannot delete non-empty directoryd: ideavim/resources
竟然删不掉,当即看了一下exclude.txt,过滤关键字也不会过滤到删不掉的文件夹。
2.解决方法
谷歌搜了一圈,看到rsync-cannot-delete-non-empty-directory-errors-even-with-force-option
Did you try to add –delete-excluded?
果断加这个参数,再带上–dry-run参数执行,啊这,确实删掉了,还把我exclude-from的列表也给干掉了,没用。
不对,突然灵光乍现,看一下要删掉的resources到底有啥玩意:
1 | ideavim/resources/ |
好家伙,这个messages.properties,正好是exclude.txt的过滤关键字,果断干掉所有的properties文件,再次执行同步命令,ok!
出现这个问题的原因是因为一开始过滤关键字并没有properties,所以把这个文件同步到了target_dir,后来加上了过滤关键字,就请神容易,送神难了。