我有一个备份 ftp 服务器,并且有一个 CRON bash 将所有备份发送到这里。
现在我必须手动删除所有旧文件,但我想使用 CRON bash 自动执行此过程
远程 FTP 文件上没有日期(我不知道为什么),但备份按日期命名(%Y-%m-%d-%H-%M-%S)。
我想列出目录中的所有文件,按名称对它们进行排序,然后删除所有索引> X 的文件,但我不知道该怎么做
我当前的代码是:
ftp -inv $ftphost << EOF
user $ftpuser $ftppass
put $savepath.bz2 mysql/"$dbname"/"$datum".sql.bz2
bye
EOF
答案1
这个解决方案当然不是万无一失的,但是如果您的备份工作每天都在运行,并且您想要保留 1 个月的备份,那么您可以删除一个月前的备份文件,如下所示:
old=$(date -d 'now -1 month' +'%Y-%m-%d')
然后在 FTP 部分
mdelete mysql/"$dbname"/"$old"*.sql.bz2
根据 FTP 服务器,您可能需要glob
先进行切换。该mls
命令应该会告诉您文件名扩展是否有效。