rsync 结合 inotify 实现文件实时同步(一)

导读:本篇文章讲解 rsync 结合 inotify 实现文件实时同步(一),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

一、常见备份方式

二、数据同步的方式

三、常用命令

四、传输模式

模式1:local(本地使用)

模式2:Access via remote shell(远程shell使用)

3.守护进程侍输方式:rsync审身非常重要的功能(不使用系统用户,更加安全)

五、rsync服务实践

 一、配置服务端

二、配置客户端

免密

        rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

        rsync的官方站点:http://rsync.samba.org/ ,由Wayne Davison.进行维护,作为一种最常用的文件备份工具,rsync往往是Linux和UNIX系统默认安装的基本组件之一。

rsync是一款快速增量备份工具,支持:

(1)本地复制;
(2)与其他SSH同步;
(3)与rsync主机同步。

        在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责相应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。如图:

rsync 结合 inotify 实现文件实时同步(一) 

一、常见备份方式

完全备份:对所有数据做一次全备份

增量备份:只备份上一次备份之后变化的数据

差异备份:备份上一次完全备份后变化的数据

常见备份组合:

完全+增量:1次完全+多次增量

完全+差异:1次完全+1次差异

二、数据同步的方式

推:push,上传(upload)

将客户端的数据上传到rsync服务端

拉:pull,下载(download)

将rsync服务端的数据下载到客户端

推拉都是由客户端发起的

三、常用命令

参数选项:

-a        #归档模式传输,等于-tropgD1

-v        #显示详细模式输出,打印速率,文件数量等

-z        #传输时进行压缩以提高效率

-r        #递归传输目录及子目录,即目录下得所有目录都同样传输

-t        #保持文件时间信息

-o       #保持文件属主信息

-p       #保持文件权限

-g        #保持文件属组信息

-l        #保留软连接P

-P        #显示同步的过程及传输时的进度等信息

-D        #保持设备文件信息

-L        #保留软连接指向的目标文件

-e        #使用的信道协议,指定替代 rsh 的 shell 程序

–exclude=filename        #指定排除不需要传输的文件

–exclude-from=file        #文件名所在的目录文件

–bwlimit=100        #限速传输

–partial        #断点续传

— delete        #让目标目录和源目录数据保持一致

四、传输模式

模式1:local(本地使用)

格式:rsync [OPTION.….] SRC…[DEST]

Local: rsync [OPTION…]SRC…[DEST] #本地

rsync                –备份命令(类似cp)

[options]           –选项

SRC…              –本地源文件

[DEST]             –本地目标文件

rsync        -avz        /etc/passwd        /tmp/

#命令        选项        源文件               目标

模式2:Access via remote shell(远程shell使用)

1.使用rsync命令下载172.16.1.41主机上/root目录下的oldboyedu.com文件,下载至本地的当前目录

Pull: rsync [OPTION…] [USER@]HOST:SRC… [DEST]

Pull         #拉取,下载

rsync        #备份命令

[options]         #选项

[USER@]        #目标主机的系统用户

HOST        #目主机IP地址或域名

SRC…         #目标主机源文件

[DEST]         #下载至本地哪个位置

rsync -avz root@172.16.1.41:/root/oldboyedu.com ./

rsync -avz root@172.16.1.41:/root//backup                #拉取远程目录下的所有文件

rsync -avz root@172.16.1.41:/root /backup/         #拉取远程目录以及目录下的所有文件

2.将本地/backup这个目录以及目录下的内容,推送至于41服务器的/tmp目录下

Push: rsync [OPTION…] SRC… [USER@]HOST:DEST

Push        #推,上传

rsync -avz /backup root@172.16.1.41:/tmp/

远程通道传输方式问题:

必须通过ssh协议才可以传输

使用普通用户需要考虑权限问题

使用ssh系统用户,不安全

必须使用真实路径,不安全

3.守护进程侍输方式:rsync审身非常重要的功能(不使用系统用户,更加安全)

1.拉取rsync备份服务的backup模块数据至本地/mnt目录

Pull: rsync [OPTION…] [USERe]HOST::SRC… [DEST]

[root@nfs ~]# rsync -avz rsync_backup@192.172.16.1.41::backup/ /mnt/ –passwond-file=/etc/rsync.password

rsync        –命令

[ÒPTION…]         —选项

[USER@]         –远程主机用户(虚拟用户)

HOST::        –远程主机地址

SRC.…        –远程主机模块(不是目录)        

[DEST]         –将远程主机数据备份至本地什么位置

2.将本地/mnt目录推送至rsync备份服务器的backup模块

Push: rsync [OPTION…] SRC… [USER@]HOST::DEST

[root@nfs ~]# rsync -avz /mnt/ rsync_backup@192.172.16.1.41::backup/ –password-file=/etc/rsync.password 

五、rsync服务实践

角色 系统 ip 主机名
服务端 CentOS 7 192.168.78.128 server01
客户端 Ubuntu 20.4 192.168.78.130 client01

 一、配置服务端

1.服务、客户端都需要安装rsync

yum install -y rsync
apt install -y rsync

2.修改服务端配置文件

[root@server01 ~]# vim /etc/rsyncd.conf

uid = rsync
gid = rsync
use chroot = no
max connections = 100
timeout = 100
pid file = /var/run/rsync.pid
lock file = /var/lock/rsync.lock
log file = /var/log/rsync.log
secrets file = /rsync/rsync.passwd
transfer logging = yes
log format = %t %a %m %f %b
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[backup]
comment = Mini Docker
path = /rsync/backup01
read only = false
auth users = text
list = false

全局参数

pid file:        指定rsync进程的pid文件的路径和名称

lock file:        支持max connections参数的锁文件

log file:        rsync的日志文件路径和名称

uid:        指定rsync进程以什么用户身份在后台运行(必须是系统用户)

gid:        指定rsync进程以什么用户组身份在后台运行

port        监听端口(默认端口873)

timeout:        指定空闲超时时间 

transfer logging = yes        记录传输文件日志

secrets file:        指定保存虚拟用户名和密码的数据库文件

log format = %t %a %m %f %b        日志文件格式

dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2         设置不需要压缩的文件

模块参数(可以写在全局部分,如果写在全局部分,则对所有的模块都生效)

path:        指定备份目录的路径

comment        注释模块说明

use chroot:        是否将用户锁定在家目录中

max connections:        指定可以进行同时连接的用户的最大数量

read only:        设置rsync服务端文件是否只读

write only:

list = true | false:        设置是否可以显示全部的模块列表

auth users:指定访问模块需要使用的用户名,这里的是虚拟用户(不是存在于/etc/passwd)

hosts allow:        指定可以访问模块或者rsync服务器端的IP地址(白名单)

hosts deny:        黑名单

3.创建目录文件和系统用户 

[root@server01 ~]# mkdir -pv /rsync/backup01

# 创建虚拟用户文件
[root@server01 ~]# cd /rsync/
[root@server01 rsync]# touch rsync.passwd
[root@server01 rsync]# vim rsync.passwd
# 配置用户名和密码,密码可以任意设置,一个用户单独一行
text:123456

# 修改rsync.passwd文件权限,必不可少步骤
[root@server01 rsync]# chmod 600 rsync.passwd


# 创建一个新的用户组,设定为系统工作组:
[root@server01 ~]# groupadd -r rsync

# 创建系统用户,但不让登录系统,并追加指定组为该账户的用户组:
[root@server01 ~]# useradd -M -s /sbin/nologin -g rsync rsync

[root@server01 lock]# cd /rsync/
[root@server01 rsync]# chown -R rsync:rsync backup01

4.启动rsync

[root@server01 rsync]# systemctl start rsyncd
[root@server01 rsync]# systemctl enable rsyncd
[root@server01 rsync]# netstat -ntpl

5.客户端测试 

root@client01:~# rsync -avz snap/ text@192.168.78.128::backup
Password: 
sending incremental file list
./
lxd/
lxd/current -> 22753
lxd/21835/
lxd/22753/
lxd/common/

sent 198 bytes  received 46 bytes  32.53 bytes/sec
total size is 5  speedup is 0.02

测试成功!!! 

二、配置客户端

免密

1.为了减少重复输入密码,可以在客户端创建密码文件,推拉都不需要在手动输入密码了:

root@client01:~# vim /etc/rsync-client.passwd
123456

root@client01:~# chmod 600 /etc/rsync-client.passwd

root@client01:~# rsync -avz text@192.168.78.128::backup /root/ --password-file=/etc/rsync-client.passwd
receiving incremental file list
./

sent 32 bytes  received 347 bytes  758.00 bytes/sec
total size is 20  speedup is 0.05

--password-file    系统可以自动从该位置下指定的文件中读取密码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74647.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!