我是一名 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"