使用SCP / SFTP在远程服务器上删除X天以前的文件

有没有人知道一些好的方法来删除远程服务器上的文件比X天更早使用SCP / SFTP? 当然,我可以在perl等写一些脚本,但我觉得它是过度的。
任何UNIX方式?
Oneliner?
独立的工具?

谢谢

PS的任务是删除一些过时的备份文件。

这个问题很古老,但是我还是想join我的bash解决scheme,因为我刚到这里时正在寻找一个解决scheme。 列表命令中的grep tar仅仅是为了我自己的目的列出tar文件,当然可以适应。

RESULT=`echo "ls -t path/to/old_backups/" | sftp -i ~/.ssh/your_ssh_key [email protected] | grep tar` i=0 max=7 while read -r line; do (( i++ )) if (( i > max )); then echo "DELETE $i...$line" echo "rm $line" | sftp -i ~/.ssh/your_ssh_key [email protected] fi done <<< "$RESULT" 

这将删除给定目录中除最后7个之外的所有tar文件。 虽然没有考虑date,但是如果你每天只有一次备份就足够了。

当然,我可以在perl等写一些脚本,但它是矫枉过正。

你不需要一个脚本来达到预期的效果 – 如果你有shell的访问权限来发送一个命令,一行就可以完成:

 ssh user@host 'find /path/to/old_backups/* -mtime +7 -exec rm {} \;' 

-mtime +7匹配一个星期前从今天午夜创build的文件。

如果您坚持使用SCP / SFTP,您可以列出文件,使用简单的脚本parsing它们,并删除旧的备份文件。

批处理模式“-b”开关应该帮助你。 它从文件读取sftp命令。 http://linux.die.net/man/1/sftp