温馨提示×

centos lamp如何备份网站

小樊
51
2026-07-20 22:55:24
栏目: 云计算

CentOS + LAMP(Linux + Apache + MySQL/MariaDB + PHP) 环境下,备份网站通常包括 网站文件数据库 两部分。下面给你一套常用、实用、可自动化的备份方案。


一、备份内容说明

一个完整备份通常包括:

  1. 网站程序文件(如 /var/www/html
  2. 数据库数据(MySQL / MariaDB)
  3. (可选)配置文件(Apache、PHP、虚拟主机)

二、备份网站文件

1️⃣ 确认网站目录

常见路径:

/var/www/html

或你自定义的虚拟主机目录,例如:

/var/www/example.com

2️⃣ 打包网站文件

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):自动生成日期

三、备份数据库(MySQL / MariaDB)

1️⃣ 备份单个数据库

mysqldump -u root -p dbname > /backup/dbname_$(date +%F).sql

2️⃣ 备份所有数据库

mysqldump -u root -p --all-databases > /backup/all_db_$(date +%F).sql

3️⃣ 压缩数据库备份

mysqldump -u root -p dbname | gzip > /backup/dbname_$(date +%F).sql.gz

四、一次性完整备份脚本(推荐)

1️⃣ 创建备份脚本

mkdir -p /backup
vi /backup/backup.sh

2️⃣ 脚本内容

#!/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 目录存在

3️⃣ 赋予执行权限

chmod +x /backup/backup.sh

五、设置定时自动备份(crontab)

crontab -e

每天凌晨 2 点备份:

0 2 * * * /backup/backup.sh >> /backup/backup.log 2>&1

查看定时任务:

crontab -l

六、恢复网站(示例)

1️⃣ 恢复网站文件

tar -xzvf web_2026-01-21.tar.gz -C /var/www/html

2️⃣ 恢复数据库

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 一般没问题)
✅ 大网站可分批备份


如果你愿意,可以告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 网站类型(WordPress / 自研 / 商城)
  • 数据量大小

我可以帮你定制 更合适的备份方案(如增量备份、异地备份、Docker 环境等)。

0