mac用户需先用homebrew安装rsync并验证版本≥3.1.0;配置ssh免密登录后,执行rsync -avzp --delete --exclude='.ds_store' --exclude='node_modules/' ~/sites/blog/ user@server:/var/www/blog/ 实现安全高效的增量同步。

Mac用户需要将本地项目文件夹(如~/Sites/blog)完整、安全、高效地同步到远程Linux服务器的对应路径(如/var/www/blog),且后续每次只传输改动过的文件,不重复拷贝全量内容。
确认本地rsync可用并满足最低版本要求
Mac系统不预装rsync,或预装版本过低(如10.15自带rsync 2.6.9),会导致--delete、--exclude-from等关键参数失效,同步行为异常甚至静默失败。
打开“终端”,执行which rsync;若无输出,说明未安装。
运行brew --version验证Homebrew是否就绪;若未安装,粘贴执行:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。
执行brew install rsync安装最新版;完成后务必运行rsync --version,确认输出中版本号【≥3.1.0】,否则后续命令可能被忽略关键逻辑。
配置SSH免密登录,避免每次同步手动输密码
rsync走SSH通道时若需交互输密码,就无法用于定时任务或脚本自动化,且中断后无法重试。
方法一:生成ED25519密钥对(安全性更高、生成更快)
在终端输入:ssh-keygen -t ed25519 -C "mac-backup",连续按回车使用默认路径和空密码。
方法二:上传公钥到服务器
执行:ssh-copy-id user@192.168.1.100(将user和IP替换为你的服务器用户名与地址);若提示command not found,改用手动方式:cat ~/.ssh/id_ed25519.pub | ssh user@192.168.1.100 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"。
测试是否生效:ssh -o ConnectTimeout=5 user@192.168.1.100;能直接进入shell即成功,退出后继续下一步。
执行增量镜像推送:保留属性+自动清理+进度可见
这条命令是实际生产环境推荐的一线操作,兼顾安全性、可读性与容错能力。
第一步:确保本地源路径末尾带斜杠——~/Sites/blog/表示同步该目录下所有内容;不带斜杠则会把blog整个夹子复制进去,造成嵌套。
第二步:目标路径写成user@192.168.1.100:/var/www/blog/,注意远程路径也必须以/结尾,否则rsync可能误判为文件名。
第三步:执行完整命令:rsync -avzP --delete --exclude='.DS_Store' --exclude='node_modules/' ~/Sites/blog/ user@192.168.1.100:/var/www/blog/。
其中-a保留权限/时间/软链,-v显示文件名,-z压缩传输,-P显示进度并支持断点续传,--delete确保服务器上删除的文件不会残留,--exclude跳过mac元数据与前端依赖目录,避免污染远端环境。
首次运行耗时较长,后续仅传输修改过的文件、新增文件及删除操作记录——这就是真正的增量镜像。











