《每日一命令22:rsync——增量同步效率之王》
本期摘要scp每次复制都传整个文件文件大了就慢。rsync只传文件的变化部分而且支持断点续传、压缩传输、排除指定目录。本文从零开始教你rsync的常用场景本地同步、远程同步、只同步新增文件、排除特定目录、限速传输、删除源端不存在的文件。以及ssh端口非22时的配置方法。读完你就能用rsync替代scp在备份和分发文件时省下大量时间。rsync是什么rsync remote sync远程同步工具。核心特性是增量传输——只传输文件变化的部分不是整个文件。使用场景本地目录备份远程文件同步增量备份文件分发最常用的5种姿势1. 本地同步bash# 同步目录复制目录内所有文件 rsync -av /source/ /dest/ # 同步目录本身连同目录一起复制 rsync -av /source /dest/注意/的区别/source/表示复制目录内的内容/source表示复制目录本身2. 远程同步推送bash# 将本地文件推送到远程 rsync -av /local/dir/ userremote:/remote/dir/ # 指定SSH端口 rsync -av -e ssh -p 2222 /local/dir/ userremote:/remote/dir/3. 远程同步拉取bash# 从远程拉取到本地 rsync -av userremote:/remote/dir/ /local/dir/4. 显示进度bashrsync -av --progress largefile.zip userremote:/backup/--progress显示传输进度条。5. 删除目标端多余文件bashrsync -av --delete /source/ /dest/确保目标目录和源目录完全一致删除目标端有但源端没有的文件。进阶技巧排除指定目录/文件bash# 排除单个目录 rsync -av --excludecache /source/ /dest/ # 排除多个目录 rsync -av --excludecache --excludelogs /source/ /dest/ # 使用排除文件列表 rsync -av --exclude-fromexclude.txt /source/ /dest/exclude.txt内容示例text.git/ node_modules/ *.log tmp/限制传输带宽bashrsync -av --bwlimit1000 /source/ userremote:/dest/--bwlimit单位KB/s上例限制为1MB/s避免占满带宽影响业务。压缩传输bashrsync -avz /source/ userremote:/dest/-z在传输时压缩适合文本文件日志、配置。断点续传适合大文件bashrsync -avP --append-verify largefile.zip userremote:/dest/-P等于--partial --progress支持断点续传。只同步新增文件不删除目标端bashrsync -avu /source/ /dest/-u表示只更新目标端比源端旧的文件。模拟运行不实际执行bashrsync -av --dry-run /source/ /dest/先看看会传输哪些文件确认无误再去掉--dry-run。真实场景场景1把代码部署到生产服务器bashrsync -avz --exclude.git --excludenode_modules ./ userprod:/app/场景2每天增量备份数据库导出目录bashrsync -av --delete /data/backup/ /backup/remote/--delete保证远程备份和本地完全一致删掉本地已不存在的旧备份。场景3从一台服务器同步日志到日志中心bashrsync -avz --bwlimit5000 /var/log/ logserver:/log/$(hostname)/限速5MB/s避免影响业务。场景4恢复上一次的完整备份bashrsync -av /backup/2026-05-12/ /data/恢复目录/rsync vs scp 对比特性rsyncscp增量传输✅ 只传变化部分❌ 每次传整个文件断点续传✅❌排除目录✅❌压缩传输✅❌保留属性✅✅速度大文件首次略慢快速度增量极快重新传一遍结论首次传输或小文件两者差别不大增量同步或大文件rsync完胜常用参数速查参数含义-a归档模式保留权限、时间戳等同于-rlptgoD-v显示详细信息-z压缩传输-P显示进度支持断点续传--delete删除目标端多余文件--exclude排除指定模式--bwlimit限制带宽(KB/s)--dry-run模拟运行不实际传输-u只更新目标端较旧的文件-e指定远程shell如ssh -p端口下期预告《每日一命令23ansible——批量执行命令神器》