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