文档首页> 常见问题> 网站和数据库的完整打包导出

网站和数据库的完整打包导出

发布时间:2026-07-07 22:32        更新时间:2026-07-08 09:58
打包导出一个网站,顺序比命令更重要:先停写入、再打包、然后校验,漏一步备份就可能不完整。下面以常见 Linux 环境为例走一遍。 准备条件 空间别拍脑袋:站点和数据库各用 du -sh 量一次,相加再留两成余量,装得下再动手;准备一个数据库备份账号,权限给到 SELECT 和 LOCK TABLES 就够;建好存放目录,比如 /backup;日期一律用 date +%F 生成,别手敲,手敲必错。 第一步:停止写入 前台挂维护页,Web 服务统一返回 503。停写前后各看一眼进程列表,确认没有残留写入。数据库用 InnoDB 引擎的,导出时加 --single-transaction 可以不锁表;其余引擎或要求绝对一致时,临时停掉写入最简单: ``` systemctl stop mysqld ``` Ubuntu 上服务名多为 mysql,以 systemctl list-units 的输出为准。 第二步:打包文件与数据库 站点文件连同权限一起打包,包名带日期方便按天留多份: ``` tar -czpf site-$(date +%F).tar.gz /var/www/html ``` 数据库导出并压缩: ``` mysqldump -ubackup -p --single-transaction --routines mydb | gzip > mydb-$(date +%F).sql.gz ``` 配置别漏:Web 服务配置、应用配置、环境变量文件、crontab、自定义的 systemd 服务,连同证书目录各拷一份到 /backup/config/。导数据库时带上 --routines,存储过程一并打包,漏了它,恢复后定时统计会静默失效。 第三步:校验与加密 生成校验和并验证: ``` sha256sum site-*.tar.gz mydb-*.sql.gz > SHA256SUMS sha256sum -c SHA256SUMS ``` 校验和文件单独记入台账,换机器也能核对。备份要传公网或第三方存储时,先对称加密再走,口令单独走另一个渠道发给自己,别和密文放一起: ``` gpg -c mydb-$(date +%F).sql.gz ``` 导出的备份记得异地再存一份,只在本机的不叫备份。 常见报错与处理 提示 Access denied:账号权限不足,补 SELECT 与 LOCK TABLES。打包中途停住:多半是磁盘写满,df -h 看一眼,清掉旧日志重来。管道中断报错:常见于大库一次导完,按表分批导出可绕开。导入报字符集错误,多是新旧库默认字符集不一致,旧库 latin1 迁新库时尤其常见,两侧统一成 utf8mb4 即可。恢复测试别省:抽个目录解开压缩包、把库导进临时实例跑通查询,能恢复的备份才算备份。