rsync 数据同步备份

在实际生产中,数据备份与同步是非常重要的事情!比如网站的一些重要文件,MySQL 数据库的热备等等。今天我们聊聊 rsync 的同步艺术!

rsync配置

rsync 是 Linux 自带的远程数据备份同步工具,使用及配置都很简单;
要使用 rsync,首先要配置 rsync 服务器,客户端和服务器都要安装 rsync;

## 安装 rsync
yum -y install rsync

## rsyncd.conf 主配置文件
--- /etc/rsyncd.conf ---
uid = root
gid = root
use chroot = no

# 口令文件
secrets file = /etc/rsyncd.secrets

# 默认情况下,客户端不能修改服务器的文件,除非添加 'read only = no';

[test]
       path = /root/test
       comment = test
       auth users = root    # 认证的用户
--- /etc/rsyncd.conf ---

## rsyncd.secrets 口令文件
--- /etc/rsyncd.secrets ---
root:123456
--- /etc/rsyncd.secrets ---

## 修改口令文件的权限为 600
chmod 600 /etc/rsyncd.secrets

## 启动 rsyncd 服务
systemctl enable rsyncd     # 开机自启
systemctl start rsyncd      # 运行服务
systemctl -l status rsyncd  # 查看状态

rsync使用

## 命令格式
rsync [option] src dst
# -a:归档
# -z:压缩
# -v:verbose
# -P:进度等信息
# --delete:删除src没有而dst上有的文件
# --exclude:排除某些文件
# --exclude-from:从指定文件读取排除参数
# --password-file:指定密码文件(权限为 600)

## 命令举例
rsync -azvP root@192.168.255.105::test /tmp/test

# 指定密码文件
echo '123456' > /root/.rsync.passwd && chmod 600 /root/.rsync.passwd
rsync -azvP --password-file=/root/.rsync.passwd root@192.168.255.105::test /tmp/test

# 删除本地没有而服务器上有的文件
rsync -azvP --delete --password-file=/root/.rsync.passwd /tmp/test/ root@192.168.255.105::test

# 排除以 .bak 结尾的文件
rsync -azvP --exclude=*.bak --password-file=/root/.rsync.passwd root@192.168.255.105::test /tmp/test

# 从指定文件中读取排除参数
echo '*.bak' > /root/.exclude.rsync
rsync -azvP --exclude-from=/root/.exclude.rsync --password-file=/root/.rsync.passwd root@192.168.255.105::test /tmp/test

# 从本地上传数据到服务器:把 src 和 dst 互换即可

# 查看目标的所有文件
rsync -v rsync://root@192.168.255.105::test