在 CentOS + LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境下,备份网站通常包括 网站文件 和 数据库 两部分。下面给你一套常用、实用、可自动化的备份方案。
一个完整备份通常包括:
/var/www/html)常见路径:
/var/www/html
或你自定义的虚拟主机目录,例如:
/var/www/example.com
cd /var/www
tar -czvf /backup/website_$(date +%F).tar.gz html
或指定目录:
tar -czvf /backup/example.com_$(date +%F).tar.gz example.com
✅ 说明:
-c:创建-z:gzip 压缩-v:显示过程$(date +%F):自动生成日期mysqldump -u root -p dbname > /backup/dbname_$(date +%F).sql
mysqldump -u root -p --all-databases > /backup/all_db_$(date +%F).sql
mysqldump -u root -p dbname | gzip > /backup/dbname_$(date +%F).sql.gz
mkdir -p /backup
vi /backup/backup.sh
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/backup"
WEB_DIR="/var/www/html"
DB_NAME="your_db_name"
DB_USER="root"
DB_PASS="your_password"
# 备份网站文件
tar -czvf $BACKUP_DIR/web_$DATE.tar.gz $WEB_DIR
# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# 删除 7 天前的备份
find $BACKUP_DIR -mtime +7 -type f -name "*.tar.gz" -delete
find $BACKUP_DIR -mtime +7 -type f -name "*.sql.gz" -delete
⚠️ 注意:
.my.cnf/backup 目录存在chmod +x /backup/backup.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /backup/backup.sh >> /backup/backup.log 2>&1
查看定时任务:
crontab -l
tar -xzvf web_2026-01-21.tar.gz -C /var/www/html
gunzip < db_2026-01-21.sql.gz | mysql -u root -p dbname
rsync 同步到远程服务器rsync -avz /backup/ user@remote:/data/backup/
或使用 scp:
scp /backup/* user@remote:/data/backup/
✅ 定期测试恢复
✅ 不要只备份本地
✅ 数据库备份时避免锁表(InnoDB 一般没问题)
✅ 大网站可分批备份
如果你愿意,可以告诉我:
我可以帮你定制 更合适的备份方案(如增量备份、异地备份、Docker 环境等)。