Skip to main content
⚡ Calmops

Linux服务器迁移清单完整指南

服务器迁移概述

服务器迁移是一项复杂的工作,需要仔细规划和执行。

迁移前准备

1. 清单检查

# 需要备份的关键文件和目录

# 系统配置
/etc/passwd          # 用户账户
/etc/shadow          # 密码哈希
/etc/group           # 用户组
/etc/sudoers         # sudo权限
/etc/hosts           # 主机名解析
/etc/fstab           # 文件系统挂载
/etc/crontab         # 定时任务
/etc/resolv.conf     # DNS配置

# 用户配置
~/.bashrc           # Bash配置
~/.bash_profile     # Bash登录配置
~/.ssh/             # SSH密钥
/root/.bashrc       # Root用户配置

# 应用数据
/data               # 数据目录
/var/www/           # Web应用
/var/lib/mysql/     # MySQL数据
/var/lib/postgresql/ # PostgreSQL数据

# 日志(可选)
/var/log/           # 系统日志

2. 服务清单

# 列出所有运行中的服务
systemctl list-unit-files --type=service --state=enabled

# 或使用 service 命令
service --status-all

# 记录网络连接
netstat -tuln > network_connections.txt
ss -tuln > ss_connections.txt

3. 磁盘使用情况

# 查看磁盘使用
df -h

# 查看目录大小
du -sh /var/*
du -sh /data/*

# 查看 inode 使用
df -i

数据备份

1. 使用rsync备份

# 同步到本地备份目录
rsync -avz --progress /data /backup/data/

# 同步到远程服务器
rsync -avz -e ssh /data user@remote:/backup/data/

# 增量备份
rsync -avz --delete -e ssh /data user@remote:/backup/

2. 使用tar打包

# 打包整个系统
tar -czvf backup.tar.gz \
    /etc \
    /var/www \
    /home \
    /opt \
    --exclude='/proc' \
    --exclude='/sys' \
    --exclude='/dev' \
    --exclude='/run' \
    --exclude='/tmp'

3. 数据库备份

# MySQL备份
mysqldump -u root -p --all-databases > all_databases.sql

# 或指定数据库
mysqldump -u root -p mydb > mydb.sql

# PostgreSQL备份
pg_dumpall -U postgres > all_postgres.sql

# MongoDB备份
mongodump --out /backup/mongodb/

配置迁移

1. SSH配置

# 复制SSH配置
cp -r /home/.ssh /backup/.ssh
cp /etc/ssh/sshd_config /backup/sshd_config

# 设置权限
chmod 700 /backup/.ssh
chmod 600 /backup/.ssh/*

2. Nginx配置

# 备份Nginx配置
cp -r /etc/nginx /backup/nginx

# 关键文件
/etc/nginx/nginx.conf
/etc/nginx/conf.d/
/etc/nginx/sites-enabled/

3. Docker配置

# 列出所有容器
docker ps -a

# 导出容器
docker export container_name > container.tar

# 复制卷
docker run --rm -v myvolume:/data -v $(pwd):/backup alpine tar cvf /backup/volume.tar -C /data .

# 保存镜像
docker save myimage:latest -o myimage.tar

服务迁移步骤

1. 停止服务

# 停止所有服务
systemctl stop nginx
systemctl stop mysql
systemctl stop php-fpm

# 或使用
service nginx stop

2. 迁移数据

# 使用rsync迁移大数据
rsync -avz --progress /data user@newserver:/data/

# 使用nc快速传输(同一网络)
# 目标服务器
nc -l 9999 | tar xf - -C /data

# 源服务器
tar cf - /data | nc newserver 9999

3. 重建服务

# 新服务器上安装相同软件
apt-get install nginx mysql-server php-fpm

# 恢复配置
cp /backup/nginx/* /etc/nginx/
cp /backup/ssh/sshd_config /etc/ssh/

4. 启动服务

# 启动服务
systemctl start nginx
systemctl start mysql
systemctl enable nginx  # 开机自启

迁移后验证

1. 服务状态

# 检查所有服务状态
systemctl status nginx
systemctl status mysql

# 检查端口监听
ss -tuln | grep :80
ss -tuln | grep :3306

2. 日志检查

# 查看错误日志
tail -f /var/log/nginx/error.log
tail -f /var/log/mysql/error.log

# 查看系统日志
journalctl -xe

3. 功能测试

# 测试Web服务
curl -I http://localhost

# 测试数据库连接
mysql -u root -p -e "SHOW DATABASES;"

# 测试应用
curl http://localhost/api/health

迁移清单模板

## 服务器迁移清单

### 迁移前
- [ ] 记录当前服务器配置
- [ ] 备份所有数据
- [ ] 测试备份完整性
- [ ] 通知用户迁移时间
- [ ] 准备回滚方案

### 迁移中
- [ ] 停止服务
- [ ] 迁移数据
- [ ] 配置新服务器
- [ ] 启动服务

### 迁移后
- [ ] 验证服务运行
- [ ] 测试功能
- [ ] 监控性能
- [ ] 更新DNS
- [ ] 通知用户完成

### 回滚
- [ ] 记录问题
- [ ] 恢复备份
- [ ] 重新迁移

2026年迁移工具推荐

工具 用途
rsync 文件同步
Duplicati 备份工具
Bacula 企业备份
Docker 容器化迁移
Ansible 自动化配置

Comments