1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 运维之道 | Linux rsync 文件同步 Inotify远程实时同步

运维之道 | Linux rsync 文件同步 Inotify远程实时同步

时间:2023-06-22 11:16:21

相关推荐

运维之道  |  Linux rsync 文件同步 Inotify远程实时同步

Linux rsync 文件同步服务器

与传统的cp、scp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

一、安装rsync

[root@localhost src]# wget /pub/rsync/src/rsync-3.1.3.tar.gz[root@localhost src]# tar -xf rsync-3.1.3.tar.gz[root@localhost src]# cd rsync-3.1.3/[root@localhost rsync-3.1.3]# ./configure --prefix=/usr/local/rsync[root@localhost rsync-3.1.3]# make && make install

二、配置rsync

rsync服务器端需要两个配置文件:rsyncd.confrsyncd.password

其中rsyncd.conf默认存放在/etc/目录下,同时它也是rsync服务器的主配置文件。该文件配置了rsync服务器的控制认证、访问、日志记录等等。而rsyncd.password主要用于存储rsync用户名和密码。

但是在rsync安装完毕后后是不会生成以上这两个配置文件的,需要我们手工进行创建。

rsync服务端配置

1、服务端rsyncd.conf配置文件内容如下:

uid = root# `root使用的用户`gid = root# `root使用的用户组(用户所在的组)`user chroot = no# `如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系`max connections = 200# `设置最大连接数,默认0,意思无限制,负值为关闭这个模块`timeout = 600# `默认为0,表示no timeout,建议300-600(5-10分钟)`pid file = /var/run/rsyncd.pid# `rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止`lock file = /var/run/rsyncd.lock# `指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制` log file = /var/run/rsyncd.log# `不设或者设置错误,rsync会使用rsyslog输出相关日志信息`[backup]# `这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护` path = /root/backup/# `这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题`ignore errors# `忽略I/O错误` read only = no# `指定客户端是否可以上传文件,默认对所有模块为true` list = no# `是否允许客户端可以查看可用模块列表,默认为可以`hosts allow = 192.168.182.0/255.255.255.0# `指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接` auth users = test# `指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接`secrets file = /etc/rsyncd.password# `指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位`

rsync默认是在nobody用户下运行的,但是我们为了以后同步时不为各种权限的事情烦恼,就让其在root用户下运行。

2、创建password文件,并授权

[root@localhost etc]# echo "test:test">>/etc/rsyncd.password

注意:该密码文件中的用户和密码可以进行自定义,同时该用户不一定要在服务器中的系统用户存在。

密码文件创建完毕后,要把其权限要设置为600,否则会在以后同步时提示验证出错。如下:

[root@localhost etc]# chmod 600 /etc/rsyncd.password

3、创建认证模块,并授权

一个rsync配置文件中可以包含多个认证模块,同时一个密码文件中也可以存放多个用户和其对应的密码。其中每一个认证模块可以对应不同的客户端。

以上两个文件创建完毕后,我们来创建其对应的目录并授权,如下:

[root@localhost etc]# mkdir /backup[root@localhost etc]# chown root:root -R /backup/

以上就是rsync服务器端的配置。

rsync客户端配置

rsync客户端配置与服务器端相比差别还是比较大的。

在客户端安装完毕rsync服务后,是不需要启动rsync服务的。

我们只需要在客户端创建连接rsync服务器时,验证码用户所需要的密码文件即可

该密码文件中的密码要与rsync服务器上的密码文件中的密码对应,并且也要与rsync服务器rsyncd.conf配置文件中的认证模块中的用户匹配。

当然该密码文件不创建也是可以的,不创建的话。我们在执行rsync操作时,就需要输入rsync的对应用户的密码。如下:

[root@localhost etc]# echo "test">>/etc/rsyncd.password[root@localhost etc]# chmod 600 /etc/rsyncd.password

注意:该密码文件中只能存放一个用户的密码,并且该文件与rsync服务器端的密码文件一样也需要把其权限设置为600。

三、rsync的启动与关闭

启动rsync服务

rsync-daemon认证方式,需要服务器和客户端都安装rsync服务,并且只需要rsync服务器端启动rsync,同时配置rsync配置文件,客户端启动不启动rsync服务。

在此我们只讲解rsync-daemon认证方式的启动。如果是源码方式安装的rsync,我们可以使用rsync –daemon来启动rsync。如下:

[root@localhost ~]# echo PATH=$PATH:/usr/local/bin/>>/etc/profile[root@localhost ~]# source /etc/profile[root@localhost ~]# rsync --daemon[root@localhost ~]# ps aux |grep rsync[root@localhost ~]# netstat -tunlp |grep 873

注意:上述命令行中,只有rsync --daemon才是启动rsync的命令。并且该命令启动时,会默认加载/etc/rsyncd.conf文件。

所以如果rsync的配置文件不在/etc目录下或者rsync配置文件名不为rsyncd.conf,那么我们在启动rsync服务时,就要手工加上该配置文件的完整路径。方法如下:

[root@localhost ~]# rsync --daemon --config=/etc/rsyncd.conf

关闭rsync服务

关闭rsync服务,如果是源码方式安装的,我们可以直接通过pkill rsync命令进行关闭。如下:

[root@localhost ~]# pkill rsync

四、rsync命令参数详解

rsync几个重要参数
-v, --verbose详细模式输出。-a, --archive归档模式,表示以递归方式传输文件,并保持所有文件属性不变。-z, --compress对备份的文件在传输时进行压缩处理。–delete:删除那些DST中存在而在SRC中没有的文件。
rsync六种工作模式

这六种模式总体上可以用两个词进行区分:推送、拉取。

推送就是在客户端上执行rsync命令,目的是把客户端需要同步的文件推送到服务器上。

拉取也是在客户端上执行rsync命令,目的是把服务器上的文件拉取到本地。

注意:无论是推送和拉取,rsync命令都是在客户端执行,只是命令的格式不同而已。

rsync [OPTION]... SRC [SRC]... DEST

同步本地文件,从一个目录同步到另外一个目录。

[root@localhost ~]# rsync -avz /data /backup

表示把本地/data目录下的文件同步到本地/backup目录下。

rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

使用一个远程shell程序(如rsh、ssh)来实现把本地的文件同步到远程机器上。此种方式属于推送方式。

[root@localhost ~]# rsync -avz /data test@192.168.199.247:/backup

表示把本地/data目录下的文件同步到服务器192.168.199.247的/backup目录下。

rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST(最常用)

把本地的文件同步到远程服务器上,其中DEST表示的是rsync服务器的认证模块名。此种方式属于推送方式。

[root@localhost ~]# rsync -avz /data test@192.168.199.247::backup --password-file=/etc/rsyncd.password

表示把本地/data目录下的文件同步到服务器192.168.199.247的backup模块下path路径下。

rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST

列出远程机器的文件列表。这类似于ls命令,不过只要在命令中省略掉本地机信息即可。

[root@localhost ~]# rsync -v rsync://test@192.168.199.247/backup

表示在本机列出服务器192.168.199.247的/backup目录下的内容,

rsync [OPTION]... [USER@]HOST:SRC [DEST]

把远程机器的文件同步到本地,此种方式属于拉取方式。

[root@localhost ~]# rsync -avz test@192.168.199.247:/backup /data

表示把192.168.199.247的/backup目录下文件同步到本地/data目录下。

rsync [OPTION]... [USER@]HOST::SRC [DEST](常用)

把远程机器的文件同步到本地,此种方式属于拉取方式。

[root@localhost ~]# rsync -avz test@192.168.199.247::backup --password-file=/etc/rsyncd.password /data

表示把192.168.199.247的backup模块path路径下的文件同步到本地/data目录下。

五、rsync同步实例

服务端
在/root/backup目录(模板)下创建测试文件

[root@localhost backup]# pwd/root/backup[root@localhost backup]# ll总用量 0drwxr-xr-x. 2 root root 6 12月 30 18:33 1.txtdrwxr-xr-x. 2 root root 6 12月 30 18:33 2.txtdrwxr-xr-x. 2 root root 6 12月 30 18:33 3.txtdrwxr-xr-x. 2 root root 6 12月 30 18:33 4.txt

客户端
客户端同步服务端文件

[root@localhost backup]# rsync -aP --delete test@192.168.182.129::backup /root/backup --password-file=/etc/rsyncd.passwordreceiving incremental file list./0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=5/7)1.txt/2.txt/3.txt/4.txt/

六、Rsync+Inotify远程实时同步

192.168.182.129:同步端

192.168.182.130:被同步端,脚本存放处

1、配置rsync ssh免秘钥登录传输

[root@localhost ~]# ssh-keygen ///创建密钥回车...[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub 192.168.182.130

在提示输入文件密码时,直接按回车,采用空密码

192.168.182.130端

2、安装inotify文件监控

文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)

inotify-tools工具下载

[root@localhost ~]# cd inotify-tools-3.14[root@localhost inotify-tools-3.14]# ./configure[root@localhost inotify-tools-3.14]# make[root@localhost inotify-tools-3.14]# make install

3、调整inotify内核参数

[root@localhost ~]# vim /etc/sysctl.conffs.inotify.max_queued_events = 16384fs.inotify.max_user_instances = 1024fs.inotify.max_user_watches = 1048576

使调整inotify内核参数命令立刻生效:sysctl -p

4、编写触发式脚本

#!/bin/shsrc=/root/backupdes=/root/backupip=192.168.182.129inotifywait -mrq -e modify,create,attrib,move,delete ${src} | while read filedofor i in $ipdorsync -aP --delete --password-file=/etc/rsyncd.password $src test@$ip::backupdonedone

5、执行脚本测试
192.168.182.130终端上执行脚本,并创建文件

[root@localhost ~]# ./inotify_rsync.sh[root@localhost backup]# touch villian.txt

192.168.182.129终端上可同步该文件

[root@localhost backup]# ll总用量 0-rw-r--r--. 1 root root 0 12月 30 22:39 villian.txt

6、添加开机自动后台自动运行

[root@localhost ~]# vi /etc/profile/bin/bash /root/inotify_rsync.sh &

视频:/video/av76832057?p=266

转载至:/rorntuck7/article/details/86666699

转载至:/13444271/2113632

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。