远程机器上存在文件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
以实际执行操作。
rsync
删除一个远程文件,因为只允许使用rsync
而不允许使用其他SSH命令。--remove-source-files选项(曾被称为--remove-sender-files)正是做这件事的。请注意保留HTML标签。rsync -avPn --remove-source-files remote:/home/user/foo.txt .
rm foo.txt
一如既往,删除-n
选项以真正执行此操作。
--dry-run
进行测试。根据rsync手册,--delete
会删除远程位置上的文件。rsync -rv --delete user@hostname.local:full/path/to/foo.txt
在下面评论指出,仅列出的命令是不正确的。要仅列出,请使用--list-only
并删除--delete
。
ssh "$remoteHost" \
"cd $backupDir && mkdir toDelete emptyDir && \
sudo rsync -av --remove-source-files ./fileToBeDeleted ./toDelete &&\
sudo rsync -av --delete ./emptyDir/ ./toDelete &&\
rmdir emptyDir toDelete"