如何使用 bash 删除 ftp 中的旧文件

如何使用 bash 删除 ftp 中的旧文件

我有一个备份 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命令应该会告诉您文件名扩展是否有效。

相关内容