我是 unix noob,所以请耐心等待 :-)
我有一个脚本可以将一堆文件 scp 到另一台服务器。
假设它们是 z1.foo、z2.foo 等。我想要做的是 scp 文件并删除目标服务器中超过 5 天的文件。
如何从目的地安全地删除文件?
谢谢。
War*_*ner 25
要以非交互方式删除文件:
ssh hostname "rm -f z100.foo z200.foo"
Run Code Online (Sandbox Code Playgroud)
通过使用--delete
标志 to ,您可以在同一命令中完成这两个任务rsync
。
> ls -1 localdir/
a.foo
b.foo
> ssh remote-host "ls -1 remotedir/"
c.foo
> rsync -a --delete localdir/ remote-host:remotedir/
> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo
Run Code Online (Sandbox Code Playgroud)
该--delete
选项从目标目录中删除源上不存在的文件。关于何时删除文件以及如何处理排除的文件,有一些选择。
> man rysnc
...
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during xfer, not before
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files from dest dirs
Run Code Online (Sandbox Code Playgroud)
手册页还包含此警告:
如果使用不当,此选项可能很危险!首先使用
--dry-run option
(-n
)运行以查看将删除哪些文件以确保未列出重要文件是一个很好的主意。
小智 5
如果您想设置用户名和端口号,您可以执行以下操作:
ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"
Run Code Online (Sandbox Code Playgroud)