FTP - 只想保留最新的10个文件 - 删除LRU

时间:2009-07-06 19:39:15

标签: unix ftp automation shell backup

我创建了一个shell脚本来备份我的webfiles +数据库转储,将其放入tar存档并在异地FTP。我喜欢每周运行X次,但我只想在FTP站点上保留最新的10个备份。

我怎样才能做到最好?我应该在shell脚本端做这项工作,还是有一个FTP命令来检查上次修改和管理的东西?

任何建议都将受到赞赏。

谢谢,

4 个答案:

答案 0 :(得分:2)

执行此类操作的一种方法是在文件名中使用星期几:

  • 备份mon.tgz
  • 备份tue.tgz

然后,当您进行备份时,您将删除或覆盖当天当天的备份文件。

(当然,这样你只能得到最新的7个文件,但这是一个非常简单的方法)

答案 1 :(得分:1)

您是否有对FTP服务器的shell访问权限?如果是这样,我确信你可以编写一个脚本来执行此操作,并安排一个cron作业来进行定期清理。

这是应该有用的东西:

num_files_to_keep=10
i=0

for file in `ls -tr`; do
    if [ $i -ge $num_files_to_keep ]; then
        rm $file;
    fi;
    i=`expr $i + 1`;
done

答案 2 :(得分:1)

find . \! -newer `ls -t|head -n 10|tail -n 1`

不幸的是,如果在少于10个文件时执行,则会在每次执行时删除最旧的文件(因为!-newer测试“较旧或相等”的“严格较旧”的内容 - 这可以通过先检查来解决:

[ `ls|wc -l` -gt 10 ] && find . \! -newer `ls -t|head -n 10|tail -n 1`

答案 3 :(得分:0)

如果你要沿着shell路径走下去,试试这个:

find /your-path/ -mtime +7 -type f -exec rm -rf {} \;

这将删除超过特定日期的所有内容(在本例中为7天)。可能更相关,具体取决于您是否需要保留一天的多个备份。例如。昨天我对同一个网站进行了十次修订。