Linux 下 Rsync 文件同步与增量备份

By | 最新修改:2025-12-22

前言

什么是 Rsync

Rsync ,即“Remote Synchronous”,“远程同步”的意思,是一款开源自由的 Linux 文件传输软件,通常用作为增量备份的工具。它可以本地与本地不同目录间互相同步,也可以本地与远程服务器端进行同步,更可以远程对远程进行增量备份。

这里的同步不是实时同步,要想实时,那么要用到其他工具与之协同。

Rsync 还可以配合 inotify、sersync 和 Crontab 进行实时、定时或时间间隔式的同步。

同步文件的原因

由于作者要在本地 Ubuntu 系统开发 WordPress 插件,然后将代码同步到服务器端的 LEMP 架构供运行和测试。

为什么是 Rsync

用 SCP 来传输不太方便,不仅没有提供增量备份,并且 Rsync 可以设置指定传输过来的文件属主和属组,毕竟 PHP-FPM/Nginx 需要设置为特定用户读写其站点目录,这些都是 SCP 没有的。

本文的主要内容和写作目的

本文介绍如何配置 Rsync、(远程)目录权限,以及本地与服务器同步的参数配置。

作者写下这篇文章的目的在于让读者避免踩坑。这个软件就这么简单,就是这么配置和使用的,并没有多复杂和可怕,本文是作者踩坑踩出来的感悟,并且分享出来。


客户端和服务端

接下来的每个操作系统第一行命令安装 Rsync 的客户端,第二行安装服务端。

如果仅有一行命令,则表示客户端和服务端都是通过这行命令安装。

本章节将介绍在 CentOS 7、CentOS Stream、RHEL / RockyLinux、Ubuntu 和 Arch Linux 上安装 Rsync 的客户端和服务端。

CentOS 7 安装

sudo yum install -y rsync

RHEL,AlmaLinux,Rocky Linux 8,9,10 或 CentOS Stream安装

sudo dnf install -y rsync
# 服务器端守护进程
sudo dnf install -y rsync-daemon

Ubuntu 安装

sudo apt-get install -y rsync
# 安装完成需要创建文件 /etc/rsyncd.conf
touch /etc/rsyncd.conf
# 再启动守护进程

Arch Linux 安装

sudo pacman -S rsync

服务器端


使用效果

首次同步

首次同步要把整个源上传到服务器上面:

正在进行本地到远程的传输

首次同步完成

完成本地到远程的同步

源增加文件

首次同步之后,运行同步命令,会将增加或修改的文件会同步更新到服务器。

Rsync的增量备份

删除

同步删除文件:

Rsync的差异备份


同步远程目标到本地

如果服务器端的配置 write only 的值不为 true,则可以执行以下的命令从远程下载文件:

rsync -v -a --delete --exclude-from=/path/to/exclude/file.list\
--password-file=/path/to/rsync_passwd \
rsync://wprsync@192.168.1.100:6666/wphtmod/ /path/to/htdocs/

利用 Rsync 从本地复制备份到本地

不需要守护进程

rsync -av --delete --exclude-from=/path/to/exclude/file.list /path/to/origin /path/to/dest

实际上是把远程目标更换成本地目标就行了。


后记

长篇大论终于到了最后面。

这里就提醒一下,修改完服务器端的配置文件,记得重启一下守护进程,如用到 SystemD,那就使用 sudo systemctl restart rsyncd 命令来重启。

经过上述方式重启后,即使一些配置有错误,也不会影响它重启,更不会显示在 systemctl status -l rsyncd 命令的执行结果中。

所以,如果要验证重启进程是否成功,可以在客户端尝试执行一次本地到远程的同步命令。

后面作者可能还会继续探索一下 rsync 的参数选项,以及来一篇关于通过 InotifyWait 进行实时文件的备份和传输。


程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com