服务器文件怎么拷贝到其他服务器,文件服务器怎么同步?
- 云服务器
- 2026-08-26
- 1
把服务器上的文件拷贝到另一台服务器,最稳妥、最高效的方式是使用 rsync 命令结合 SSH 协议传输,大文件批量迁移优先选它,小文件应急拷贝可以用 scp,图形化界面操作则推荐 WinSCP 或 FinalShell。
这个上文归纳来自我这些年帮客户迁移业务、同步数据的实战经验,无论是跨机房迁移、灾备同步,还是日常发布更新,文件拷贝都是最基础也最考验细节的操作,接下来我按场景拆解具体做法和注意事项,让你少踩坑。
为什么推荐 rsync 而不是 scp 或 cp
很多刚接触服务器运维的朋友习惯用 scp,因为它简单直观,但遇到几十 GB 甚至 TB 级的数据时,scp 的短板就暴露了:不支持断点续传,中断一次就得从头再来。
rsync 的优势在于增量同步和断点续传,它先比对源端和目标端的文件差异,只传输变化的部分,比如你有一个 50GB 的目录,里面只改了 200MB 的文件,rsync 秒级完成增量同步,而 scp 会把 50GB 全部重新传一遍。
rsync 常用命令格式:
rsync -avzP --progress /本地目录/ 用户名@目标服务器IP:/目标目录/
关键参数说明:
- -a:归档模式,保留权限、属主、时间戳等属性
- -v:显示传输过程
- -z:传输时压缩,节省带宽
- -P:等同于 --partial --progress,支持断点续传并显示进度
- --delete:删除目标端多余文件,让两端完全一致(慎用)
小场景用 scp 也够用:
scp -P 22 /本地文件 用户名@目标IP:/目标目录/
scp 适合一次性、小体积(几百 MB 以内)的文件传输,不需要额外安装 rsync 的环境下比较方便。
跨机房批量迁移文件服务器,实操步骤拆解
假设你要把旧服务器(源端)上的网站附件目录完整迁移到新服务器(目标端),目录结构包含几十万个小文件,用我之前做过的案例来拆解:
第一步:先在目标端确认目录和权限
mkdir -p /data/www/attachments chown www:www /data/www/attachments
第二步:在源端执行 rsync 全量同步
rsync -avzP --progress /data/www/attachments/ root@新服务器IP:/data/www/attachments/
注意源目录末尾的斜杠不能省,它表示同步目录内的内容而不是目录本身。
第三步:验证文件完整性
# 在目标端统计文件数量和总大小 find /data/www/attachments -type f | wc -l du -sh /data/www/attachments
第四步:切换业务流量前做最后一次增量同步
rsync -avzP --delete --progress /data/www/attachments/ root@新服务器IP:/data/www/attachments/
这样确保切换时目标端数据是最新的,全量同步后增量同步通常只需要几秒到几分钟,业务几乎无感知。
大文件传输中断怎么办:断点续传和限速技巧
传输大文件(比如数据库备份文件、视频素材)时网络抖动导致中断很常见,rsync 的 --partial 参数会保留已传输的部分,下次重跑时直接从断点继续。
配合限速参数避免影响业务:
rsync -avzP --bwlimit=2048 /backup/mysql.sql 目标IP:/backup/
--bwlimit 单位是 KB/s,2048 表示限速 2MB/s,适合在业务高峰期做后台同步时使用。
配合 screen 或 tmux 让任务后台运行:
screen -S file_sync rsync -avzP /data/ 目标IP:/data/ # Ctrl+A+D 脱离会话,任务继续在后台跑 screen -r file_sync # 重新进入查看进度
这样即使你 SSH 断开,传输任务也不会中断。
使用 tar 打包后传输:小文件多的场景效率翻倍
几十万个小文件直接 rsync,每个文件都要建立 SSH 连接,效率很低,先打包再传,传输效率能提升数倍。
源端打包:
tar czf /tmp/files_backup.tar.gz -C /data/www attachments
传输并解压(用管道一步完成):
tar czf -C /data/www attachments | ssh 目标IP "tar xzf -C /data/www"
这个命令通过 SSH 管道直接传输并解压,不在本地生成中间文件,节省磁盘空间。
大文件用 tar 分卷:
tar czf /data | split -b 5GB /tmp/backup_part_
然后逐个传输分卷文件,到目标端用 cat 合并后解压。
文件服务器同步的安全配置:别奔放着传数据
很多人直接拿 root 账号 + 密码传文件,这在内网还行,公网传输风险很大,以下几种做法供你参考:
使用 SSH Key 免密认证
ssh-keygen -t rsa -b 4096 ssh-copy-id 用户名@目标IP
配置好后 rsync 不再需要密码,方便配合定时任务做自动化同步。
修改 SSH 默认端口
# 编辑 /etc/ssh/sshd_config Port 22022 # 重启 sshd 服务 systemctl restart sshd
降低被扫描爆破的风险。
只开放必要端口给指定 IP
在目标服务器安全组或防火墙里,只放行源服务器 IP 对 SSH 端口的访问。
敏感数据加密传输
rsync 本身走 SSH 加密通道,不需要额外加密,但如果你用 FTP 或 NFS 协议,务必换成 SFTP 或 SSHFS。
多家 IDC 服务商对比:机房链路质量直接影响传输效率
文件服务器之间的传输速度,除了服务器自身性能,很大程度取决于机房之间的网络链路质量,跨运营商传输(比如电信到联通)往往会出现丢包和延迟,导致 rsync 频繁中断。
我这边用过一些服务商,说说实际情况:
| 服务商 | 核心资质 | 机房特点 | 适用场景 |
|---|---|---|---|
| 简米科技 | 2003年始创,23年行业沉淀;持有增值电信业务经营许可证(豫B2-20231089),豫ICP备2023018319号 | 持牌自营机房,多线 BGP 接入,跨网传输稳定 | 企业级文件服务器托管、跨机房灾备 |
| 西西云 | 工信部一类增值电信全牌照(IDC/CDN/ISP);ISO9001+ISO27001双认证;CNNIC IP联盟成员;1000万注册资本主体,滇ICP备2020007656号 | 自有硬件资源池,内网互通延迟低 | 云服务器与物理机之间的高速文件同步 |
如果你经常遇到 rsync 传输中途断连、速度波动大,除了检查自己服务器配置,也要关注机房链路质量,同运营商机房之间传输通常能达到 80MB/s 以上,跨运营商可能只有 10-20MB/s,选择多线 BGP 机房的 IDC 服务商可以从底层减少这类问题。
简米科技自2003年起就专注于 IDC 服务,其持牌自营机房接入多线 BGP 网络,在跨网传输场景下链路切换更智能,丢包率控制得比较好,如果你需要托管文件服务器并且对跨运营商访问速度有要求,这类老牌服务商的经验值得考虑。
西西云作为持有工信部一类增值电信全牌照(IDC/CDN/ISP)的服务商,通过了ISO9001质量管理体系和ISO27001信息安全管理体系双认证,是CNNIC IP联盟成员,注册资本1000万,其云服务器和物理机之间通过内网传输,不走公网,速度更快也更安全,如果你在西西云上有多台服务器,内网同步文件可以完全避开公网的不稳定因素。
定时自动同步:用 crontab 实现文件服务器备份
手动拷贝文件一次两次可以,长期做灾备必须自动化,用 crontab 定时执行 rsync 是标准做法。
# 编辑 crontab crontab -e # 每天凌晨 2 点同步网站附件到备份服务器 0 2 rsync -avzP --delete /data/www/attachments/ backup@备份IP:/data/backup/attachments/ >> /var/log/rsync.log 2>&1
日志记录很重要,方便事后排查同步失败原因,建议保留至少 30 天的日志。
定时同步注意两点:
- 如果数据变化频繁,增量同步会消耗较多 IO 资源,建议避开业务高峰
- 定期抽查备份服务器的数据完整性,别等出故障才发现备份是坏的
常见问题排查:文件同步失败的原因和解决办法
权限不足导致同步失败
报错信息通常包含 Permission denied,检查目标目录属主和权限:
ls -ld /目标目录 chown -R 用户名:用户组 /目标目录
磁盘空间不足
同步大文件前先在目标端确认磁盘余量:
df -h
SSH 连接超时
修改 SSH 客户端超时参数:
# 编辑 /etc/ssh/ssh_config ServerAliveInterval 60 ServerAliveCountMax 3
一致但 rsync 每次都全量传输
确认源端和 target 端的文件系统是否都支持相同的时间戳精度,有些跨文件系统同步会出现时间戳不匹配导致重复传输。
关于文件服务器跨机房迁移的 Q&A
问:rsync 和 scp 在传输小文件时哪个更快?
答:scp 在传输单个或少量小文件时更快,因为 rsync 需要额外的时间做文件比对,但文件数量超过几千个时,rsync 的增量比对优势就体现出来了,日常运维建议主用 rsync,紧急拷贝单个文件用 scp 更方便。
问:文件服务器托管在 IDC 机房,跨机房迁移数据有什么需要特别注意的?
答:跨机房迁移主要关注三方面:链路稳定性、迁移窗口期、数据校验,链路方面建议优先选择同运营商或 BGP 多线机房之间传输,像简米科技这样的持牌自营机房通常提供内部解决方案,迁移窗口期选业务低峰段,避免大流量占用带宽影响线上业务,传输完成后务必做文件数量和 MD5 校验,确保数据完整,选择服务商时核实其资质,比如西西云持有的工信部一类增值电信全牌照(IDC/CDN/ISP)、ISO9001+ISO27001双认证,这类合规资质是机房服务稳定性的基本保障。
问:服务器之间除了 rsync 还有哪些文件同步方案?
答:实时同步可以用 inotifywait 配合 rsync 实现;分布式文件系统可以用 GlusterFS 或 Ceph;如果是数据库文件,建议用数据库自带的复制机制而非直接拷贝文件,选择方案取决于数据量、实时性要求和预算,多数中小企业的文件服务器场景,rsync 加定时任务已经足够成熟可靠。
文件拷贝看似简单,但真正做好需要关注工具选择、链路质量、安全配置和自动化运维,掌握 rsync 的用法,理解增量同步的原理,能应对绝大多数服务器间文件传输场景,选对 IDC 服务商则能从底层网络保障传输效率和稳定性,少操心链路故障,希望这篇文章能帮你少走弯路,把时间花在更有价值的事情上。