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


18

我是unix菜鸟,所以请耐心等候:-)

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

假设它们是z1.foo,z2.foo等。我想做的是在目标服务器中scp文件并删除5天以上的文件。

如何从目的地安全删除文件?

谢谢。


“覆盖目标位置的文件”?如果您scp远程目录中已经存在的文件,它们将被自动覆盖
Aki 2014年

最好使用本地的shell脚本删除文件。这意味着您随时可以使用SCPing文件。但是每天都有运行的Shell脚本删除某个文件夹下的文件,您将文件保存在该文件夹中。命令将类似于:find /path/to/files* -mtime +5 -exec rm {} \;
Zareh Kasparian

Answers:


21

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

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

1
什么是主机名?是servername@ipaddress:path/to/dir/
HattrickNZ

1
主机名是just user:password@ipaddressuser:password@dnsname或者如果不需要,则可以省略密码。我刚刚尝试过,root@somednsname并且效果很好。在path/to/dir我把rm命令,以绝对路径的一部分,以确保它是正确的。
AsGoodAsItGets

6

您可以使用--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)运行以查看哪些文件将被删除以确保未列出重要文件是一个非常好的主意。


2

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

ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.