> 换服务器是每个站长都会遇到的事。旧 VPS 快到期了、配置不够了、或者就是想换个更好的。最怕的就是迁移过程中网站打不开、数据丢失。其实只要按流程来,完全可以在线无损搬家。
---
## 迁移前的准备
先搞清楚要搬什么:
```bash
# 确认当前网站目录
echo $PWD && ls -la
# 确认数据库位置和大小
ls -lh /mnt/mmcblk1p1/typecho/usr/typecho.db
# 确认 Web 服务运行用户
ps aux | grep nginx
```
---
## 第一步:在新服务器上搭好环境
```bash
apt update
apt install nginx php-fpm php-sqlite3 sqlite3 -y
systemctl start nginx php7.4-fpm
systemctl enable nginx php7.4-fpm
```
---
## 第二步:同步网站文件
使用 rsync 增量同步:
```bash
rsync -avzP \
-e "ssh -p 2222" \
/var/www/html/ \
root@新服务器IP:/var/www/html/
```
- -a:归档模式,保留权限
- -v:显示详细信息
- -z:压缩传输
- -P:显示进度 + 支持断点续传
---
## 第三步:迁移数据库
SQLite 最简单,直接复制文件:
```bash
# 旧服务器上
tar -czf /tmp/db_backup.tar.gz /mnt/mmcblk1p1/typecho/usr/typecho.db
scp -P 2222 /tmp/db_backup.tar.gz root@新服务器IP:/tmp/
# 新服务器上
tar -xzf /tmp/db_backup.tar.gz -C /
chown www-data:www-data /mnt/mmcblk1p1/typecho/usr/typecho.db
```
---
## 第四步:更新 DNS 解析
修改域名 DNS 指向新服务器 IP。注意:
- TTL 提前 24 小时改小(600秒),切换几乎无感知
- 改完 DNS 后保留旧服务器 3 到 7 天观察
---
## 迁移检查清单
- [ ] 网站文件已完整同步
- [ ] 数据库已迁移并确认数据完整
- [ ] 文件权限正确(www-data 用户可读写)
- [ ] Nginx 配置正确,能正常访问
- [ ] PHP 版本一致
- [ ] SSL 证书已在新服务器配置
- [ ] DNS 解析已更新
- [ ] 旧服务器保留一周观察
---
按这个流程走,网站迁移就像搬个家,东西不少但不会丢,过程复杂但不会断。