bash - 如何限制目录以在其中保留一定数量的文件

标签 bash shell mysql database-backups mysql-backup

<分区>

我每天都在转储一个 mysql wordpress 数据库作为备份。因为我不想在一年后得到 365 个 .sql 文件,所以我认为只保留最后 30 天的转储文件会比较合适。始终保留最后 30 个并自动删除旧的,每天一个。

我希望将其作为 cron 作业的一部分在 bash 中进行编程。所以我已经有了转储文件并将文件发送到备份服务器的部分。我只需要添加计数和删除最旧的每天片段。

这是我得到的(用户名和密码保存在 .my.cnf 文件中):

now=$(date +'%m-%d-%y')
mysqldump -h mysql.server.com my_database | gzip -9 > ${home}/dbBackups/db_backup.sql.gz
mv ${home}/dbBackups/db_backup.sql.gz ${home}/dbBackups/${now}_db_backup.sql.gz
scp ${home}/dbBackups/${now}_db_backup.sql.gz backup_user@backup.server.com:/home/backup_user/backup.server.com/dbBackups/

有人知道如何实现此功能吗?

最佳答案

打印超过 30 天的文件的标准命令是

find <full_path_to_your_dir> -type f -mtime +30 -print 

删除超过 30 天的文件的标准命令是

find <full_path_to_your_dir> -type f -mtime +30 -delete

上述命令将删除 所有 超过 30 天的文件。

关于bash - 如何限制目录以在其中保留一定数量的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151824/

相关文章:

linux - Linux shell 脚本中的条件

Java、MySQL 使用 ID(主键)更新表

php - 我们如何在mysql中更新多个表

php - 从性能角度重定向用户的最佳方式

bash - 如何使程序由脚本顶部的 #!/bin/foo 调用?

bash - 您可以通过管道将 F 键回显到另一个程序吗?

git - 创建带格式的 'git log' 别名

c - 如何将 SIGALRM 传递给在微秒内完成执行的程序?

linux - 脚本应该在服务器启动期间自行运行

linux - Bash 编程 — 如何将字符串添加到文本文件中