基于 NFS 与 Rsync 实现跨服务器 Seafile 数据平滑迁移实战

在分布式存储或文件同步场景中,经常需要将老服务器上的海量数据无缝迁移至新服务器。本文以 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
相关推荐
zzzzzz31019 小时前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode20 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
A小辣椒3 天前
TShark:Wireshark CLI 功能
linux
A小辣椒3 天前
TShark:基础知识
linux
AlfredZhao3 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334664 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
深海鱼在掘金4 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
猪脚踏浪4 天前
linux 拷贝文件或目录到指定的位置
linux