内网两台 Linux 服务器高效传输大文件(70GB 实战指南)
在服务器运维中,经常需要在内网服务器之间传输大量文件。本文将以将 70GB 的网站目录从 192.168.3.1 传输到 192.168.3.2 为例,详细介绍几种常用且高效的方法,并重点推荐rsync方案,因为它支持断点续传,是处理大文件传输的最佳选择。
一、场景与需求分析
- 源服务器:192.168.3.1
- 目标服务器:192.168.3.2
- 传输内容:整个网站目录
/home/www/website1/(约 70GB) - 目标路径:
/home/www/website2/ - 核心需求:稳定、高效、支持断点续传,尽量不影响业务。
二、推荐方案:rsync 命令行传输(高效可靠)
rsync是 Linux 系统下的远程数据同步工具,它通过增量传输的方式,只发送文件中变化的部分,大大节省了时间和带宽,并且支持断点续传。
1. 核心命令
在源服务器(192.168.3.1)的终端中执行以下命令:
rsync -avP --inplace --exclude='.user.ini' /home/www/website1/ root@192.168.3.2:/home/www/website2/2. 命令参数详解
| 参数 | 作用 |
|---|---|
-a | 归档模式,递归传输并保留文件权限、属主、时间等所有属性。 |
-v | 显示详细的传输过程,方便排查问题。 |
-P | 等价于--partial --progress,显示传输进度,并支持断点续传。 |
--inplace | 直接在目标文件上写入,避免创建临时文件,节省磁盘空间和时间,对大文件尤其重要。 |
--exclude='.user.ini' | 排除宝塔面板生成的保护文件,避免目标服务器权限异常。 |
源路径末尾的/ | 表示传输目录内的内容,而非目录本身。如果不加/,会在目标路径下生成public/public目录。 |
3. 防止终端断开(screen 工具)
传输 70GB 文件需要较长时间,为了避免因 SSH 连接中断导致传输失败,建议使用screen工具在后台运行任务。
# 1. 安装 screen(如果未安装) yum install screen -y # 2. 创建一个名为 "transfer" 的新会话 screen -S transfer # 3. 在新会话中执行 rsync 命令 rsync -avP --inplace --exclude='.user.ini' /home/www/website1/ root@192.168.3.2:/home/www/website2/ # 4. 按 Ctrl + A,然后按 D,分离并退出会话,让任务在后台运行。 # 5. 之后可以随时重新连接查看进度 screen -r transfer4. 首次连接与断点续传
- 首次连接:执行命令后,会提示确认目标服务器的指纹,输入
yes并回车,然后输入目标服务器的root密码即可开始传输。 - 断点续传:如果传输过程中意外中断,只需重新执行相同的
rsync命令,它会自动检查已传输的部分,从中断处继续,无需从头开始。
三、其他可选方案
1. scp 命令(简单直接)
scp是基于 SSH 的加密传输协议,操作简单,但不支持断点续传,适合传输小文件。
2.如果你安装这宝塔面板:
- 在源服务器(192.168.3.1):
- 进入「文件」管理,找到目标文件夹
/home/www/website1/。 - 点击「更多」→「分享」,生成一个内网下载链接。
- 进入「文件」管理,找到目标文件夹
- 在目标服务器(192.168.3.2):
- 进入「文件」管理,导航到
/home/www/。 - 点击「远程下载」,粘贴刚才生成的链接,即可开始下载。
- 进入「文件」管理,导航到
四、传输完成后的善后工作
传输完成后,目标服务器上的文件所有者可能是root,这会导致网站无法正常运行。因此,必须修复文件权限。
在目标服务器(192.168.3.2)的终端中执行:
chown -R www:www /home/www/website2/这条命令将目录下所有文件和子目录的所有者和所属组都修改为www,这是宝塔面板默认的网站运行用户。
五、总结
- 单次少量文件:使用
scp简单快捷。 - 大量或大文件同步:使用
rsync,高效且支持断点续传,是最佳选择。 - 长期文件共享:考虑使用 NFS 或 Samba 挂载网络存储。
- 图形化操作:使用宝塔面板的「远程下载」功能,操作直观。
对于本文中的 70GB 大文件传输场景,rsync + screen的组合无疑是最稳定、最高效的解决方案。
