当前位置:网站首页 >  攻略

Linux通用服务器:手把手配置备份自动过期删除完整步骤

时间:2026年06月03日 23:25:45 来源:易频IT社区
一、前置检查 先确认你的服务器有可操作的终端权限,以及备份文件的具体路径(假设本文备份路径统一为`/data/backups`,如果不同后续同步修改)。 ```bash 查看终端是否有sudo权限(普通用户输入此命令需输入密码后通过才算) sudo whoami 输出应为 root ``` 二、方案选型 采用rsync的--max-delete配合logrotate或find定时任务?不,用最通用、无额外依赖(默认所有主流Linux发行版都预装)的方案:`find + crontab`,简单到复制粘贴即可。 三、基础备份过期删除命令(手动测试用) 这一步必须先做,确保不会误删文件! 3.1 查找过期备份(仅查看不删除) 假设保留7天内修改的备份文件(超过7天算过期),执行: ```bash 查找/data/backups目录下,超过7天(mtime +7)的普通文件(f),仅打印路径 find /data/backups -type f -mtime +7 -print 查找/data/backups目录下,超过7天(mtime +7)、大小为0的空文件,仅打印路径 find /data/backups -type f -mtime +7 -size 0 -print 查找/data/backups目录下,超过7天(mtime +7)的空目录(d),仅打印路径 find /data/backups -type d -mtime +7 -empty -print ``` 注意: - `-mtime +7`:修改时间在7天以前(不含第7天当天修改的) - `-mtime -7`:修改时间在7天以内(含第7天当天修改的) - `-mtime 7`:修改时间在第7天整(当天00:00-23:59修改的) - 如果想按「创建时间」删除,部分文件系统(如EXT4带`ext_attr`、XFS带`project quota`)支持`-birthtime +7`,但兼容性不如`-mtime`,生产环境优先用`-mtime` 3.2 安全删除过期备份 确认3.1打印的都是要删的文件后,用不可逆但速度快的`-delete`参数(强烈推荐优先用此参数,不要用xargs rm -rf,更安全): ```bash 先删除过期普通文件(注意顺序!先删文件再删目录,否则空目录条件会失效) find /data/backups -type f -mtime +7 -delete 再删除过期空文件 find /data/backups -type f -mtime +7 -size 0 -delete 最后删除过期空目录 find /data/backups -type d -mtime +7 -empty -delete ``` 如果不小心用了`-delete`但删错了,立即停止服务器写入,用`extundelete`(EXT4)或`xfsrestore`(XFS)尝试恢复,不过本文不涉及恢复内容。 四、定时自动执行过期删除 用Linux默认的`crontab`定时任务,无需安装额外软件。 4.1 编辑root用户的crontab ```bash 建议用root用户编辑,避免权限不足无法删除某些备份 sudo crontab -e 首次编辑会让你选择编辑器,选vim.tiny(默认2号)或nano(1号,新手友好) ``` 4.2 添加定时任务(新手直接复制新手友好版) 新手友好版(每天凌晨2点执行,保留7天备份,带操作日志) 在crontab文件末尾另起一行粘贴以下内容(注意修改备份路径和保留天数!): ```bash 注释说明任务 0 2 /bin/find /data/backups -type f -mtime +7 -delete >> /var/log/backup_clean.log 2>&1 0 2 /bin/find /data/backups -type f -mtime +7 -size 0 -delete >> /var/log/backup_clean.log 2>&1 0 2 /bin/find /data/backups -type d -mtime +7 -empty -delete >> /var/log/backup_clean.log 2>&1 ``` 参数详解 | 定时任务参数 | 含义 | | | | | 0 | 第0分钟 | | 2 | 第2小时(24小时制) | | | 每月每天 | | | 每月 | | | 每周每天 | | /bin/find | find命令的绝对路径(避免PATH环境变量失效导致找不到命令) | | >> /var/log/backup_clean.log 2>&1 | 将标准输出和错误输出追加到日志文件(方便排查问题) | 进阶版(每周日凌晨3点执行,保留30天备份,先压缩最近30天以外但不到31天的?不直接删干净,带更详细的日志) ```bash 注释说明任务 0 3 0 ( echo "=== 备份清理任务开始于 $(date '+%Y-%m-%d %H:%M:%S') ===" /bin/find /data/backups -type f -mtime +30 -delete /bin/find /data/backups -type f -mtime +30 -size 0 -delete /bin/find /data/backups -type d -mtime +30 -empty -delete echo "=== 备份清理任务结束于 $(date '+%Y-%m-%d %H:%M:%S') ===" ) >> /var/log/backup_clean.log 2>&1 ``` 4.3 保存并退出编辑器 - 用nano的新手:按`Ctrl+O`保存,按`Enter`确认文件名,按`Ctrl+X`退出 - 用vim的老手:按`Esc`,输入`:wq`,按`Enter`保存退出 4.4 确认定时任务已添加 ```bash 查看当前root用户的crontab sudo crontab -l 应该能看到刚才粘贴的内容 ``` 4.5 测试定时任务(可选但推荐新手做) 手动触发定时任务,不用等凌晨2/3点: ```bash 先创建一个临时的、超过7天的测试文件 sudo touch -d "8 days ago" /data/backups/test_expired_file.txt 查看当前root用户的定时任务ID(第一列数字) sudo crontab -u root -l | cut -f1 -d' ' | head -1 假设第一列数字是0,第二列是2,手动触发所有root用户的定时任务(立即执行) sudo runuser -l root -c 'crontab -l | grep -v "^" | while read line; do eval "$line"; done' 查看测试文件是否被删除 ls -l /data/backups/test_expired_file.txt 输出应为 ls: cannot access '/data/backups/test_expired_file.txt': No such file or directory 查看日志文件是否有记录 tail -20 /var/log/backup_clean.log ``` 五、日志管理(防止日志文件过大) 如果定时任务每天执行,日志文件会越来越大,用`logrotate`(默认所有主流Linux发行版都预装)自动分割和删除旧日志: 5.1 创建logrotate配置文件 ```bash 用sudo编辑新的配置文件 sudo nano /etc/logrotate.d/backup_clean ``` 5.2 粘贴完整配置(直接复制即可) ```bash /var/log/backup_clean.log { daily rotate 30 compress delaycompress missingok notifempty create 0644 root root } ``` 5.3 保存并退出编辑器 和4.3步骤一样。 5.4 测试logrotate配置 ```bash 手动触发logrotate配置测试 sudo logrotate -d /etc/logrotate.d/backup_clean 输出中应该没有错误信息 手动强制触发logrotate配置 sudo logrotate -f /etc/logrotate.d/backup_clean 查看/var/log目录下是否有分割后的压缩日志 ls -l /var/log/backup_clean.log ``` 六、生产环境注意事项 1. 必须先手动测试删除命令:就是3.1和3.2的步骤,确认无误再加入定时任务 2. 备份路径必须精准:不要写`/`或`/data`,只写备份文件所在的目录 3. 日志文件权限要正确:root用户的crontab生成的日志,owner和group都应该是root 4. 可以定期备份重要备份:比如将最近7天的备份同步到另一台服务器或云存储,防止误删后无法恢复 5. 如果有多种类型的备份:比如数据库备份、文件备份,可以分别配置不同的find命令和crontab任务

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图