使用rsync删除单个文件

时间:2009-02-02 22:45:59

标签: rsync

远程计算机上的文件foo.txt位于:/home/user/foo.txt

本地计算机上不存在。

我想使用rsync删除foo.txt。

我不知道(并且为了这个问题的目的而假设我无法找到)本地或远程机器上的/ home / user中有哪些其他文件,所以我不能只是同步整个目录。

我可以用什么 rsync 命令删除远程计算机上的foo.txt?

4 个答案:

答案 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从远程服务器删除目录的内容,这就是我这样做的方法:

  1. 创建一个空的模拟文件夹:

    mkdir mock

  2. 与之同步:

    rsync -arv --delete --dry-run ~/mock/ remote_server:~/dir_to_clean/

  3. 从上面的行中删除--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选项以真正执行此操作。