scp 文件并删除远程目录上的文件

Kap*_*psh 23 scripting scp

我是 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)

  • 主机名只是`user:password@ipaddress` 或`user:password@dnsname` 或者如果不需要,您可以省略密码。我只是用 `root@somednsname` 试了一下,效果很好。我在 rm 命令中放入的 `path/to/dir` 部分作为绝对路径,以确保它是正确的。 (2认同)

Lad*_*ada 8

通过使用--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)