在CentOS系统中,文件同步传送是日常运维和开发工作中常见的操作,无论是服务器之间的数据备份、代码部署,还是用户文件的迁移,都离不开高效可靠的文件传输方式,本文将详细介绍CentOS系统中常用的文件同步传送方法,包括基础命令、工具选择及实际应用场景,帮助读者根据需求选择最适合的方案。

基础文件传输命令
CentOS作为Linux发行版,内置了多种基础的文件传输命令,适用于简单的单文件或小批量文件传输场景。
SCP(Secure Copy)
SCP基于SSH协议,通过加密传输确保数据安全,适合在服务器与客户端之间安全传输文件,其基本语法为:scp [选项] 源文件 目标地址
常用选项包括:
-r:递归复制目录-P:指定SSH端口(注意大写)-p:保留文件权限和时间戳
示例:将本地/data/test目录同步到远程服务器的/home/user目录:scp -r -P 22 /data/test user@remote_ip:/home/user
RSYNC(Remote Sync)
RSYNC是更高效的文件同步工具,支持增量传输,仅同步变化的部分,适合大文件或频繁同步的场景,其语法为:rsync [选项] 源目录 目标地址
核心优势选项:
-avz:归档模式、保留权限、压缩传输(推荐组合)--delete:目标目录与源目录保持完全一致(删除多余文件)
示例:本地目录同步至远程服务器并删除目标目录多余文件:rsync -avz --delete /data/ user@remote_ip:/backup/
图形化与高级工具选择
对于需要可视化操作或复杂同步需求的场景,可选择以下工具:

FileZilla(客户端工具)
FileZilla是跨平台的FTP客户端,支持SFTP/FTP协议,通过图形界面拖拽即可完成文件传输,适合不熟悉命令行的用户,使用时需确保服务器端已安装vsftpd或openssh-server。Unison(双向同步工具)
当需要双向同步(即本地与远程目录互相同步)时,Unison是比RSYNC更合适的选择,它支持冲突检测和跨平台同步,安装命令为:yum install unison
配置完成后通过
unison path_local path_remote命令执行同步。
自动化同步与脚本实践
在定期备份或批量同步场景中,可通过脚本实现自动化,以下是一个使用RSYNC+SSH密钥免密登录的脚本示例:
#!/bin/bash SRC_DIR="/data/logs" DEST_DIR="backup@remote_ip:/data/logs" rsync -avz --delete -e "ssh -i /home/user/.ssh/id_rsa" $SRC_DIR $DEST_DIR
脚本执行前需配置SSH免密登录:
- 生成密钥对:
ssh-keygen -t rsa - 复制公钥至远程服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_ip
性能优化与注意事项
- 带宽控制:使用
--bwlimit参数限制RSYNC传输速率,避免影响其他服务:rsync --bwlimit=1000 -avz /data/ user@remote_ip:/backup/
- 错误处理:通过
rsync的退出码判断同步是否成功(变量),例如在脚本中添加:if [ $? -eq 0 ]; then echo "同步成功" else echo "同步失败" >&2 exit 1 fi - 日志记录:通过
>>将同步结果写入日志文件,便于排查问题:rsync -avz /data/ user@remote_ip:/backup/ >> /var/log/rsync.log 2>&1
常见传输方式对比
| 工具 | 协议 | 是否加密 | 增量同步 | 双向支持 | 适用场景 |
|---|---|---|---|---|---|
| SCP | SSH | 是 | 否 | 否 | 小文件、一次性传输 |
| RSYNC | SSH/RSH | 是 | 是 | 否 | 大文件、定期增量备份 |
| Unison | 自定义协议 | 是 | 是 | 是 | 双向同步、多设备协同 |
FAQs
Q1:CentOS下如何实现本地目录与远程目录的实时同步?
A:可通过inotify-tools工具结合RSYNC实现实时监控与同步,首先安装inotify-tools:yum install inotify-tools,然后编写监控脚本:

#!/bin/bash
src="/data/watch"
rsync_dest="user@remote_ip:/data/backup"
inotifywait -mrq -e modify,create,delete,move $src | while read event; do
rsync -avz --delete $src $rsync_dest
done 后台运行该脚本即可实现实时同步。
Q2:传输大文件时如何避免因网络中断导致失败?
A:可使用rsync的--partial参数保留部分传输的文件,中断后恢复传输时会从断点继续:
rsync --partial --progress -avz large_file.zip user@remote_ip:/tmp/
lrzsz工具中的sz(发送)和rz(接收)也支持断点续传,需确保两端均已安装。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复