rsync 入门:用一条命令在两台机器间安全同步文件
把一台服务器上的网站目录、照片或者代码,完整搬到另一台机器上,是很多开发者迟早会遇到的事。用移动硬盘拷贝太慢,用压缩包传来传去又容易丢文件、丢权限。rsync 就是为这件事而生的工具:它走 SSH 安全传输,只同步变化的部分,断了还能续传。下面讲讲它的用法。
一、rsync 是什么
rsync 是一款经典的文件同步工具,几乎所有 Linux 发行版都自带。它最大的特点是增量同步:第一次把全部文件传过去,之后只传新增和改动过的部分,省流量也省时间。同步时它会尽量保留文件的权限、所有者、修改时间,同步过去的文件和原来保持一致。它既能在同一台机器的两个目录之间同步,也能通过 SSH 在两台机器之间同步,后者正是本文的重点。
二、先确认 rsync 装好了
在两台机器上分别执行下面这条命令,能看到版本号就说明已经装好:
rsync --version
如果提示找不到命令,用发行版自带的包管理器安装即可,例如 Debian 系用 apt 安装,Red Hat 系用 dnf 安装。两台机器都要装好,同步时两端都要调用它。另外确认两台机器之间能 SSH 登录。
三、最常用的一条命令
把本地目录同步到远程服务器,最常用的写法是这一条:
rsync -avz 本地目录/ 用户名@服务器地址:远程目录/
这条命令里冒号前面是远程主机的登录信息,冒号后面是远程路径。第一次执行时它会把目录里的全部文件传过去,之后再执行,只传改动过的文件。下面逐个拆开看这三个字母的含义。
四、看懂常用选项
-a 是归档模式,保留权限、时间戳、软链接等属性,是最常用的组合基础。-v 是显示详细过程,同步了哪些文件一目了然。-z 是传输时压缩,文件多、带宽窄时效果明显。–dry-run 是先模拟一遍,只打印要做什么而不真的传输,正式同步前建议先跑一次。–exclude 可以排除不需要同步的文件,比如缓存目录和日志文件。
五、四个实战场景
场景一,从远程服务器把文件拉回本地:
rsync -avz 用户名@服务器地址:远程目录/ 本地目录/
场景二,排除缓存和日志,只同步真正需要的文件:
rsync -avz --exclude 缓存目录 本地目录/ 用户名@服务器地址:远程目录/
场景三,正式同步前先模拟,确认无误再执行:
rsync -avz --dry-run 本地目录/ 用户名@服务器地址:远程目录/
场景四,远程服务器换了 SSH 端口或密钥文件:
rsync -avz -e "ssh -p 端口号 -i 密钥文件路径" 本地目录/ 用户名@服务器地址:远程目录/
六、容易踩的三个坑
第一个坑是目录末尾的斜杠。源目录写成本地目录/,表示同步目录里面的内容;写成本地目录(不带斜杠),则会把目录本身也同步过去,多出一层目录。第二个坑是 --delete。它会删除目标端多余的文件,让两边完全一致,用之前务必先用 --dry-run 确认,否则误删了只能从备份里找回来。第三个坑是权限。如果目标目录没有写权限,同步会中途失败,先确认目录归属和权限,再执行同步。记住这两条:同步前备份,正式跑之前先模拟。
七、总结
rsync 的核心就一句话:用一条命令,通过 SSH 安全地把变化的部分同步过去。记住 -avz 这组常用选项,养成先模拟、再执行的习惯,再配合定时任务做定期备份,一台机器到另一台机器的文件同步就基本不用操心了。
- 点赞
- 收藏
- 关注作者
评论(0)