18

文件 foo.txt 存在于远程机器上:/home/user/foo.txt

它在本地计算机上不存在。

我想使用 rsync 删除 foo.txt。

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

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

4

4 回答 4

30

试试这个:

rsync -rv --delete --include=foo.txt '--exclude=*' /home/user/ user@remote:/home/user/

(强烈建议--dry-run先运行来测试它)虽然看起来使用 ssh 会更容易......

ssh user@remote "rm /home/user/foo.txt"
于 2009-02-02T22:52:57.407 回答
6

这有点微不足道,但如果你像我一样来到这个页面,寻找一种使用 rsync 从远程服务器删除目录内容的方法,我就是这样做的:

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

    mkdir mock

  2. 与之同步:

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

  3. 从上面的行中删除--dry-run以实际执行此操作。

于 2011-10-17T12:05:24.360 回答
1

如上所述,用于--dry-run预先测试。--delete根据 rsync 手册页删除远程位置上的文件。

rsync -rv --delete user@hostname.local:full/path/to/foo.txt

下面的评论指出这将仅列出是不正确的。仅列出使用--list-only和删除--delete.

于 2019-07-22T14:34:12.150 回答
1

刚刚遇到同样的问题,需要用于rsync删除远程文件,因为 rsync允许使用其他 SSH 命令,并且不允许使用其他 SSH 命令。--remove-source-files选项(以前称为--remove-sender-files )正是这样做的:

rsync -avPn --remove-source-files remote:/home/user/foo.txt .
rm foo.txt

与往常一样,删除-n选项以真正执行此操作。

于 2020-05-31T07:49:38.570 回答