远程计算机上的文件foo.txt位于:/home/user/foo.txt
本地计算机上不存在。
我想使用rsync删除foo.txt。
我不知道(并且为了这个问题的目的而假设我无法找到)本地或远程机器上的/ home / user中有哪些其他文件,所以我不能只是同步整个目录。
我可以用什么 rsync 命令删除远程计算机上的foo.txt?
答案 0 :(得分:29)
试试这个:
rsync -rv --delete --include=foo.txt '--exclude=*' /home/user/ user@remote:/home/user/
(强烈建议首先使用--dry-run
进行测试)虽然看起来使用ssh会更容易...
ssh user@remote "rm /home/user/foo.txt"
答案 1 :(得分:6)
这有点微不足道,但如果像我一样,你来到这个页面寻找一种方法来使用rsync从远程服务器删除目录的内容,这就是我这样做的方法:
创建一个空的模拟文件夹:
mkdir mock
与之同步:
rsync -arv --delete --dry-run ~/mock/ remote_server:~/dir_to_clean/
从上面的行中删除--dry-run
以实际执行此操作。
答案 2 :(得分:0)
如上所述,请使用--dry-run
进行优先测试。 --delete
根据rsync手册页删除远程位置上的文件。
rsync -rv --delete user@hostname.local:full/path/to/foo.txt
下面的评论指出此列表将不正确。要仅列出,请使用--list-only
并删除--delete
。
答案 3 :(得分:0)
遇到了同样的问题,需要使用rsync
删除远程文件,因为仅 rsync
,并且不允许其他SSH命令。 --remove-source-files选项(以前称为--remove-source-files)确实做到了:
rsync -avPn --remove-source-files remote:/home/user/foo.txt .
rm foo.txt
与往常一样,删除-n
选项以真正执行此操作。