当前位置:首页 > 云服务器 > 正文

服务器文件怎么拷贝到其他服务器,文件服务器怎么同步?

把服务器上的文件拷贝到另一台服务器,最稳妥、最高效的方式是使用 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 服务商则能从底层网络保障传输效率和稳定性,少操心链路故障,希望这篇文章能帮你少走弯路,把时间花在更有价值的事情上。

0