我创建了一个shell脚本来备份我的webfiles +数据库转储,将其放入tar存档并在异地FTP。我喜欢每周运行X次,但我只想在FTP站点上保留最新的10个备份。
我怎样才能做到最好?我应该在shell脚本端做这项工作,还是有一个FTP命令来检查上次修改和管理的东西?
任何建议都将受到赞赏。
谢谢,
答案 0 :(得分:2)
执行此类操作的一种方法是在文件名中使用星期几:
然后,当您进行备份时,您将删除或覆盖当天当天的备份文件。
(当然,这样你只能得到最新的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天)。可能更相关,具体取决于您是否需要保留一天的多个备份。例如。昨天我对同一个网站进行了十次修订。