前言¶
从 rsync 简介 我们知道 rsync 是一个增量同步工具。每次执行 rsync
命令,数据可以同步一次,但无法实时同步数据。如何做到呢?
使用 inotify-tools,这个程序工具可以实现单向实时同步。由于是实时数据同步,前提是无密码身份验证登录。
无论使用 rsync 协议还是 SSH 协议,都可以实现免密码身份验证登录。
SSH 协议免密码身份验证登录¶
首先,在客户端上生成一对公钥和私钥,输入命令后一直按 Enter 键。密钥对保存在/root/.ssh/目录中。
[root@fedora ~]# ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256: TDA3tWeRhQIqzTORLaqy18nKnQOFNDhoAsNqRLo1TMg root@fedora
The key's randomart image is:
+---[RSA 2048]----+
|O+. +o+o. .+. |
|BEo oo*....o. |
|*o+o..*.. ..o |
|.+..o. = o |
|o o S |
|. o |
| o +. |
|....=. |
| .o.o. |
+----[SHA256]-----+
然后,使用 scp
命令将公钥文件上传到服务器。例如,我将此公钥上传到用户 testrsync
[root@fedora ~]# scp -P 22 /root/.ssh/id_rsa.pub root@192.168.100.4:/home/testrsync/
[root@Rocky ~]# cat /home/testrsync/id_rsa.pub >> /home/testrsync/.ssh/authorized_keys
尝试免密码登录,成功!这里没有出现新文件,因此没有显示传输文件的列表。
[root@fedora ~]# ssh -p 22 testrsync@192.168.100.4
Last login: Tue Nov 2 21:42:44 2021 from 192.168.100.5
[testrsync@Rocky ~]$
提示
应打开服务器配置文件 /etc/ssh/sshd_configPubkeyAuthentication yes
rsync 协议免密码身份验证登录¶
在客户端,rsync 服务为系统准备了一个环境变量 - RSYNC_PASSWORD,默认情况下它是空的,如下所示
[root@fedora ~]# echo "$RSYNC_PASSWORD"
[root@fedora ~]#
如果您想实现免密码身份验证登录,只需为该变量赋值即可。赋的值是之前为虚拟用户设置的密码li. 同时,将此变量声明为全局变量。
[root@Rocky ~]# cat /etc/rsyncd_users.db
li:13579
[root@fedora ~]# export RSYNC_PASSWORD=13579
尝试一下,成功!这里没有出现新文件,因此没有显示传输文件的列表。
[root@fedora ~]# rsync -avz li@192.168.100.4::share /root/
receiving incremental file list
./
sent 30 bytes received 193 bytes 148.67 bytes/sec
total size is 883 speedup is 3.96
提示
您可以将此变量写入 /etc/profile,使其永久生效。内容为:export RSYNC_PASSWORD=13579
作者: tianci li
贡献者: Steven Spencer, Ganna Zhyrnova