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

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

我是一名 unix 菜鸟,所以请耐心等待 :-)

我有一个脚本,可以将一堆文件 scp 到另一台服务器。

假设它们是 z1.foo、z2.foo 等。我想要做的是 scp 文件并删除目标服务器中超过 5 天的文件。

如何安全地从目标位置删除文件?

谢谢。

答案1

要以非交互方式删除文件:

ssh hostname "rm -f z100.foo z200.foo"

答案2

您可以使用--delete标志在同一个命令中完成这两项任务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

--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

手册页还包含以下警告:

如果使用不当,此选项可能会很危险!最好先使用--dry-run option( -n) 运行以查看要删除哪些文件,以确保未列出重要文件。

答案3

如果您想设置用户名和端口号,您可以执行以下操作:

ssh [email protected] -p22 "rm -rf /home/amzad/test.php"

相关内容