在分布式存储或文件同步场景中,经常需要将老服务器上的海量数据无缝迁移至新服务器。本文以 Seafile 数据迁移为例,详细记录通过搭建 NFS 共享存储,并结合 Rsync 进行后台数据传输的完整实操过程。
一、服务器A(新服务器)配置 NFS 服务端
新服务器作为数据的接收端,需要安装并配置 NFS 服务,将指定目录共享给老服务器。
1. 安装 NFS 并准备目录
首先关闭防火墙避免端口拦截,并创建用于接收数据的同步目录:
systemctl stop firewalld
df -h
mkdir -p /home/sync-data
安装 NFS 工具包,并启动服务:
yum install nfs-utils
systemctl status nfs-server
systemctl start nfs-server
2. 配置 NFS 共享规则
编辑 NFS 配置文件,开放同步目录的读写权限:
vim /etc/exports
在文件中添加以下配置(允许所有IP访问,关闭 root 压缩,保证同步权限一致):
/home/seafile-data *(rw,sync,no_subtree_check,no_root_squash)
3. 生效配置并测试
刷新 NFS 配置使其生效,并验证共享目录是否发布成功:
exportfs -ra
showmount -e
进入本地同步目录,创建一个测试文件,用于后续挂载验证:
cd /home/sync-data
vim 1.txt
# 随便输入内容保存退出
二、服务器B(老服务器)配置 NFS 客户端并同步
老服务器作为数据发送端,通过挂载新服务器的 NFS 目录,将本地 Seafile 数据推送过去。
1. 安装 NFS 客户端并验证连通性
安装必要的依赖包并启动 rpcbind 服务:
yum install nfs-utils rpcbind
systemctl start rpcbind
检查是否能正常获取到新服务器(172.62.10.92)的共享列表:
showmount -e 172.62.10.92
2. 挂载远程 NFS 目录
创建本地挂载点,并将新服务器的目录挂载到本地:
mkdir /sync-data
mount 172.62.10.92:/home/sync-data /sync-data
df -h
3. 挂载互通测试
进入挂载目录,查看并读取在服务器A中创建的测试文件,确认双向通信正常:
cd /seafile-data/
ll
cat 1.txt
4. 执行 Rsync 后台数据同步
将老服务器本地的 Seafile 真实数据目录,通过 Rsync 推送到挂载的 NFS 目录中。使用 nohup 或 & 将任务放至后台运行,避免断开终端导致传输中断:
rsync -avz /data/storage /sync-data/ > 1.txt 2>&1 &
5. 实时监控同步进度
通过 tail 命令动态查看输出日志,掌握当前的文件传输状态:
tail -f 1.txt