跳到主要内容

主机资讯与使用指南

rsync 教程:服务器文件同步、增量备份与迁移

使用 rsync 通过 SSH 预览并同步目录,说明路径末尾斜杠、非默认端口、增量传输和删除参数。

两台服务器都要安装 rsync

rsync 适合把文件目录复制到另一台服务器,后续再次运行会比较文件变化。传输通过 SSH 时,使用已有 SSH 账号、密钥和端口。

Ubuntu/Debian 两端分别安装 rsync。目标目录提前建立,并保证远程用户有写入权限。本文示例用户名 backup、地址 new.example.com、目标 /srv/site/ 需改成自己的配置。

sudo apt update
sudo apt install -y rsync

先预览要传哪些文件

rsync -av --dry-run /srv/site/ backup@new.example.com:/srv/site/

源目录末尾的 / 表示复制目录里面的内容。没有 / 时,会把 site 目录本身放到目标中,形成不同层级。预览输出应对应预期文件和路径。

-a 使用归档模式保留常见属性,实际可保留的用户、组和权限取决于两端账号权限。不同运行用户的服务器,恢复后按应用需要设置归属。

执行同步与非默认端口

rsync -av --progress /srv/site/ backup@new.example.com:/srv/site/

再次执行时主要传输新增或变化文件。中断后可以重新运行,数据库等持续变化数据需要用应用支持的备份方法导出。

rsync -av --progress -e 'ssh -p 2222' /srv/site/ backup@new.example.com:/srv/site/

第二条用于远程 SSH 端口为 2222 的情况。端口放在 ssh 参数中,不是 rsync 目标路径后面。

镜像与历史备份不同

默认同步不会删除目标多出来的文件。需要严格镜像时,--delete 会删除源目录已经没有的目标文件,先加 --dry-run 看删除清单,确认后才执行实际镜像。

镜像会同步误删,不能代替保留历史版本的备份。按日期建立独立备份或使用专用备份工具,才能恢复更早的数据。

网站与数据库分别迁移

WordPress 文件可用 rsync 复制,数据库先导出 SQL 再传输。不要用 rsync 直接复制运行中 MySQL 的数据目录。

最终切换前暂停写入,同步最后一轮变化文件和数据库。检查新服务器文件数量、权限和网站页面,完成后再改变域名解析。

相关阅读