数据库应用:rsync远程同步

news2024/11/15 10:26:15

目录

一、理论

1.rsync

2.rsync优缺点

3.rsync三种工作模式

4.rsync同步源服务器

3. 配置rsync下行同步(定时同步)

4.rsync实时同步(上行同步)

 5.配置rsync实时同步(上行同步)

6.使用rsync快速删除大量文件

7.inotify-tools 监控文件安装

二、实验

1.配置rsync下行同步(定时同步)

三、问题

1.rsync启动失败

2.常见错误

四、总结


一、理论

1.rsync

(1)概念

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

rsync 的官方站点的网址是 rsync.samba.org/,目前最新版本是 3.1.3,由 Wayne Davison 进行维护。作为一种最常用的文件备份工具,rsync 往往是 Linux 和 UNIX 系统默 认安装的基本组件之一。
(2)特点

支持拷贝特殊文件,如连接文件、设备等。

可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。

可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。

可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。

可以通过socket(进程方式)传输文件和数据(服务端和客户端)。

支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。
 

2.rsync优缺点

(1)  优点

1)可以增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物);socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务。

2)可以限速进行数据的备份或恢复操作。

3)远程SHELL通道模式还可以加密(SSH)传输

4)支持匿名认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像

5)保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p

6)可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。(–exclude)
 

(2)缺点

1)大量小文件时进行同步备份,比对的时间较长,有时候会导致rsync进程停止运行或者进程挂起; 解决方法: a、打包后再同步; b、drbd(文件系统同步复制block)。

2)同步大文件,比如:10G这样的,有时也会出现问题,导致rsync进程中断,未完整同步前,是隐藏文件,但是会占用磁盘空间(ls -al查看)。直到同步完成后,将隐藏文件改成正常文件。而且,每中断一次,生成一个隐藏文件。
 

3.rsync三种工作模式

分别是:本地方式,远程方式,守护进程。

rsync参数 说明

-v, 		--verbose	详细模式输出
-a, 		--archive	归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-z, 		--compress	对备份的文件在传输时进行压缩处理
-P						显示进度
-r,			--recursive	对子目录以递归模式处理
-l, 		--links		保留软链结
-p, 		--perms		保持文件权限
-o, 		--owner		保持文件属主信息
-g, 		--group		保持文件属组信息
-D, 		--devices	保持设备文件信息
-t, 		--times		保持文件时间信息
-e, 		--rsh=command 指定使用rsh、ssh方式进行数据同步
-S, 		--sparse	对稀疏文件进行特殊处理以节省DST的空间
-n, 		--dry-run	现实哪些文件将被传输
-w, 		--whole-file 拷贝文件,不进行增量检测
-B, 		--block-size=SIZE	检验算法使用的块尺寸,默认是700字节。
-x, 		--one-file-system	不要跨越文件系统边界
-R, -		-relative	使用相对路径信息
-b, 		--backup	创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
-u, 		--update	仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件
-q, 		--quiet		精简输出模式
-c, 		--checksum	打开校验开关,强制对文件传输进行校验
--exclude=PATTERN		指定排除不需要传输的文件模式
--exclude-from=FILE		排除FILE中指定模式的文件
--bwlimit=KBPS			限制I/O带宽,KBytes per second
--delete				删除那些DST中SRC没有的文件
--password-file=FILE	从FILE中得到密码

4.rsync同步源服务器

(1)原理

在远程同步任务中,负责发起 rsync 同步操作的客户机称为发起端,而负责响应来自客户机的 rsync 同步操作的服务器称为同步源。

① 在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。
② 在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限。

3. 配置rsync下行同步(定时同步)

(1)环境

源服务器:192.168.204.46

客户机(发起端):192.168.204.45

(2)配置源服务器

systemctl stop firewalld
setenforce 0
 ​
 rpm -q rsync      #一般系统已默认安装rsync
 ​
#建立/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf
cat /etc/rsyncd.conf #注意:配置文件中,行后不要有注释和空格。
##全局配置			
uid = root    #用户			
gid = root    #用户组			
use chroot = no    #安全相关			
max connections = 200    #最大链接数			
timeout = 300    #超时时间			
pid file = /var/run/rsyncd.pid    #进程对应的进程号文件			
lock file = /var/run/rsync.lock    #锁文件			
log file = /var/log/rsyncd.log    #日志文件,显示出错信息
##模块配置			
[backup]            #模块名称			
path = /data      #模块对应的位置(路径)			
ignore errors       #忽略错误程序			
read only = false    #是否只读			
list = false        #是否可以列表			
hosts allow = 192.168.204.0/24  #准许访问rsync服务器的客户范围			
#hosts deny = 0.0.0.0/32      #禁止访问rsync服务器的客户范围			
auth users = rsync_backup    #不存在的用户;只用于认证			
secrets file = /etc/rsync.password  #设置进行连接认证的密匙文件

 ​
 #关闭rsync 服务
 kill $(cat /var/run/rsyncd.pid) 
 rm -rf /var/run/rsyncd.pid


#创建rsync备份目录/授权rsync用户管理备份目录,修改备份目录权限
mkdir -p /data
useradd rsync -s /sbin/nologin -M #创建一个rsync的虚拟用户,只被程序使用
chown -R rsync.rsync /data/

#创建认证用户密码文件,修改文件权限
echo "rsync_backup:123456" >/etc/rsync.password
chmod 600 /etc/rsync.password

#重启rsync守护进程服务,并查看是否启动
systemctl enable rsyncd.service 
systemctl restart rsyncd.service
ps -ef|grep rsync

#启动文件
cat /usr/lib/systemd/system/rsyncd.service
[Unit]
Description=fast remote file copy program daemon
  nditionPathExists=/etc/rsyncd.conf

[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"

[Install]
WantedBy=multi-user.target

(3) 发起端配置

基本格式

rsync  [选项]  原始位置  目标位置

常用选项

③配置

 #将指定的资源下载到本地/tmp目录下进行备份。密码123456
 ​
  格式一: #用户名@主机地址::共享模块名
 rsync -avz rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password /tmp
 #backup为共享模块名,密码123456
 #rsync_backup指的是我在同步的时候用的哪个用户身份
 #backup 代表的是模块,模块下面会写同步的默认路径和一些特性,所以我们只需要写模块就好了
 #/tmp指的是同步到本地的目录
 ​
 格式二: #rsync:/用户名@主机地址/共享模块名
 rsync -avz rsync://rsync_backup@192.168.204.46/tmp​
 ​
 #免交互格式配置:
echo "123456">/etc/rsync.password
 ​
chmod 600 /etc/rsync.password   #密码文件权限必须为600,即除了属主,其他人都没有查看权限。
 ​
 rsync -avz aaa.txt rsync_backup@192.168.204.246::backup --password-file=/etc/rsync.password  
#免密同步
 ​
 ​
 #定时同步
 crontab -e
 30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/rsync.password
rsync_backup@192.168.204.46::backup  /opt/
 #为了在同步过程中不用输入密码,需要创建一个密码文件,保存backuper用户的密码,如/etc/server.pass。 在执行rsync 同步时使用选项"--password-file=/etc/server.pass"指定即可。
 ​
 systemctl restart crond
 systemctl enable crond

4.rsync实时同步(上行同步)

(1)定期同步的不足

① 执行备份的时间固定,延迟明显、实时性差
② 当同步源长期不变化时,密集的定期任务是不必要的
(2)实时同步的优点
一旦同步源出现变化,立即启动备份
只要同步源无变化,则不执行备份
(3) Linux内核的inotify机制
从版本2.6.13开始提供
可以监控文件系统的变动情况,并做出通知响应
辅助软件:inotify-tools
(4) 发起端配置rsync+Inotify
使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。
因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

 5.配置rsync实时同步(上行同步)

发起端需要配置 rsync+Inotify。

(1)创建rsync备份目录/授权rsync用户管理备份目录,修改备份目录权限

mkdir -p /data

#创建一个rsync的虚拟用户,只被程序使用
useradd rsync -s /sbin/nologin -M 
chown -R rsync.rsync /data/

(2)发起端,调整 inotify 内核参数
在Linux内核中,默认的inotify机制提供了三个调控参数:

① max_queue_events ( 监控事件队列,默认值为16384)、
② max_user_instances (最多监控实例数,默认值为128)、
③ max_user_watches (每个实例最多监控文件数,默认值为8192)。
当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。

cat /proc/sys/fs/inotify/max_queued_events
 cat /proc/sys/fs/inotify/max_user_instances
 cat /proc/sys/fs/inotify/max_user_watches
 ​
 vim /etc/sysctl.conf    #内核参数都在该文件中修改
 fs.inotify.max_queued_events = 16384
 fs.inotify.max_user_instances = 1024
 fs.inotify.max_user_watches = 1048576
 ​
 sysctl -p

(3)发起端,安装 inotify-tools
用inotify 机制还需要安装inotify-tools, 以便提供inotifywait、 inotifywatch 辅助工具程序,用来监控、汇总改动情况。

inotifywait:可监控modify (修改)、create (创建)、move (移动)、delete (删除)、attrib ( 属性更改)等各种事件,一有变动立即输出结果。
inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。
 

 tar zxvf inotify-tools-3.14.tar.gz -C /opt/
 ​
 cd /opt/inotify-tools-3.14
 ./configure
 make && make install
 ​
 #可以先执行“inotifywait”命令,然后另外再开启一个新终端向 /data 目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。
 inotifywait -mrq -e modify,create,move,delete /data
 ​
 #选项“-e”:用来指定要监控哪些事件
 #选项“-m”:表示持续监控
 #选项“-r”:表示递归整个目录
 #选项“-q”:简化输出信息

(4)发起端,编写触发式同步脚本

在另外一个终端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)。

 vim /opt/inotify.sh 
 #!/bin/bash
 ​
 #定义inotifywait监控/data目录中文件事件的变量。attrib表示属性变化。
 INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /data"
 ​
 #定义执行 rysnc 上行同步的变量。--delete保证两边目录内容一致,可以不加。
 RSYNC_CMD="rsynC -azH --delete --password-file=/etc/server .pass /data backuper@192.168.204.46::backupdir/"
 ​
 #使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
 $INOTIFY_CMD | while read DIRECTORY EVENT FILE 
 do
    #如果rsync未在执行,则立即启动
    if[ $(pgrep rsync | wc -l) -le 0 ];then
         $RSYNC_CMD
    fi
 done
 ​
 chmod +8 /opt/inotify.sh
 ​
 chmod +x /etc/rc.d/rc.local     #开机自启脚本文件
 echo '/opt/inotify.sh' >> /etc/rc.d/rc.local  #加入开机自动执行
 ​
 #之后运行脚本(后台运行)
 cd /opt/
 ./inotify.sh &
 ​
 #之后在发起端创建文件,查看源服务器中是否新增了

如果同步的文件比较大,同步时比较慢导致后面文件没来的及同步,则需要在脚本内添加消息队列或缓冲

 #!/bin/bash
 #定义inotifywait监控目录中文件事件的变量
 INOTIEY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /data/"
 #定义执行rsync上行同步的变量
 RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /data/ backuper@192.168.41.46::backupdir/"
 #使用while、read持续获取监控结果,根据结果可以进一步判断是否读取到输出的监控记录
 $INOTIEY_CMD | while read DIRECTORY EVENT FILE
 do    
       #小于等于0,则等待它执行完再去同步其他文件
       until [ $(pgrep rsync | wc -l) -le 0 ] 
      
       do
          sleep 1
       done
       $RSYNC_CMD
 done

(5)验证同步效果
上述脚本用来检测本机/data目录的变动情况,一旦有更新触发rsync 同步操作,上传备份至服务器192.168.204.246 的data共享目录下。

触发式上行同步的验证过程如下:

① 在本机运行/opt/inotify.sh 脚本程序.

② 切换到本机的 /data/ 目录,执行增加、删除、修改文件等操作。

③ 查看远端服务器中的data目录下的变化情况。

6.使用rsync快速删除大量文件

(1)场景

假如要在linux下删除大量文件,比如100万、1000万,像/usr/local/nginx/proxy_temp的nginx缓存等,那么rm -rf * 可能就不好用了,因为要等待很长一段时间。

在这种情况下我们可以使用rsync来巧妙处理。

(2)原理

rsync实际用的是替换原理。
 

 #先建立一个空的文件夹:
 mkdir /home/blank
 ​
 #用rsync删除目标目录:
 rsync --delete-before -a -H -v --progress --stats /home/blank/ /usr/local/nginx/proxy_temp
 
 #这样目标目录很快就被清空了

(3)选项说明

7.inotify-tools 监控文件安装

(1)概念

inotify-tools 是一个用C语言库,一个为Linux提供简单inotify接口的命令行程序。这些程序可以用于监视文件系统事件并执行相应操作。这些程序是用C语言来写的,除了需要Linux内核的inotify支持外,没有其他的依赖。inotify-tools 3.14是目前最新版本,其于2010年3月7日发布。

inotify,它是Linux在内核 2.6.13 (June 18, 2005)版本中引入的一个新功能,它为用户态监视文件系统的变化提供了强大的支持,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除、创建或者改变属性。

(2)inotify安装

inotify支持检测

只有在内核 2.6.13 (June 18, 2005)以上的Linux版本中才支持inotify-tools。

查看当前系统是否支持inotify, 可用通过 uname -a 查看你的内核版本

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

或者查看/proc/sys/fs/inotify/,如果看到显示 max_queued_events max_user_instances max_user_watches 则说明支持inotify

[root@localhost ~]# ls /proc/sys/fs/inotify/
max_queued_events  max_user_instances  max_user_watches

(3)inotify-tools安装

wget --no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

(4)inotify-tools 工具包中包含了两个命令

①  inotifywait

1)概念

inotifywait 仅执行阻塞,等待 inotify 事件,你可以使用它来监控任何一组文件和目录,或监控整个目录树(目录、子目录、子目录的子目录等等),并且可以结合 shell 脚本,更好的使用 inotifywait。

2)命令格式

inotifywait [-hcmrq] [-e <event> ] [-t <seconds> ] [--format <fmt> ] [--timefmt <fmt> ] <file> [ ... ]

3)选项参数

-h|--help     	显示帮助信息
@<file>       	排除不需要监视的文件,可以是相对路径,也可以是绝对路径
--exclude <pattern>
                正则匹配需要排除的文件,大小写敏感
--excludei <pattern>
                正则匹配需要排除的文件,忽略大小写。
-m|--monitor  	接收到一个事情而不退出,无限期地执行。默认行为是接收到一个事情后立即退出
-d|--daemon   	跟--monitor一样,除了是在后台运行,需要指定--outfile把事情输出到一个文件。也意味着使用了--syslog
-r|--recursive	监视一个目录下的所有子目录
--fromfile <file>
                从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头
-o|--outfile <file>
                输出事件到文件.
-s|--syslog   	输出错误信息到系统日志
-q|--quiet    	不输出详细信息,只输出事件
-qq           	除了致命错误,不会输出任何信息
--timefmt <fmt>	指定时间格式,用于�format选项中的%T格式
-c|--csv      	输出csv格式。
-t|--timeout <seconds>
                设置超时时间,如果为0,则无限期地执行下去。
-e|--event <event1> [ -e|--event <event2> ... ]
                指定监听的时间,如果省略,则侦听所有事件。
--format <fmt>	指定输出格式
     %w 表示发生事件的目录
     %f 表示发生事件的文件
     %e 表示发生的事件
     %Xe 事件以“X”分隔
     %T 使用由--timefmt定义的时间格式

3)可监听的事件

access		    文件或者目录被读
modify		    文件或目录被写入
attrib		    文件或者目录属性被更改
close_write	  文件或目录关闭,在写模式下打开后
close_nowrite	文件或目录关闭,在只读模式打开后
close		      文件或目录关闭,而不管是读/写模式
open		      文件或目录被打开
moved_to	    文件或者目录移动到监视目录
moved_from	  文件或者目录移出监视目录
move		      文件或目录移出或者移入目录
create		    文件或目录被创建在监视目录
delete		    文件或者目录被删除在监视目录
delete_self	  文件或目录移除,之后不再监听此文件或目录
unmount		    文件系统取消挂载,之后不再监听此文件系统

示例1、监控/data目录

inotifywait -rmq /data

们在另一个终端中想该目录中写入一个文件

echo "test" >> /data/newfile

就会在前一个终端中看到如下信息

# inotifywait -rmq /data
/data/ CREATE newfile
/data/ OPEN newfile
/data/ MODIFY newfile
/data/ CLOSE_WRITE,CLOSE newfile

上所示,我们监控的了对于newfile文件的 CREATE、OPEN、MODIFY、CLOSE_WRITE、CLOSE等事件。

示例2、实时监控对/etc/passwd 文件的修改、删除和权限相关时间,并且按照指定格式输出。

# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f %e' --event modify,delete,attrib  /etc/passwd

在另一终端创建一个新用户

# useradd testuser

时在前一个终端中就会监控到一个ATTRIB 事件

# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f %e' --event modify,delete,attrib  /etc/passwd
29/10/16 16:59 /etc/passwd ATTRIB

示例3、实现对 /data/web 目录进行监控,监控文件删除,修改,创建和权限相关事件,并且要求将监控信息写入/var/log/web_watch.log。要求日志条目要清晰明了,能突显文件路径、事件名和时间。

# cat web_watch.sh
#!/bin/bash
inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format  '%T %w%f %e' --event delete,modify,create,attrib  /data/web | while read  date time file event
  do
      case $event in
          MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)
                  echo $event'-'$file'-'$date'-'$time >> /var/log/web_watch.log
              ;;
 
          MOVED_FROM|MOVED_FROM,ISDIR|DELETE|DELETE,ISDIR)
                  echo $event'-'$file'-'$date'-'$time /var/log/web_watch.log
              ;;
      esac
  done

行脚本后,在另一个终端操作后,查看/var/log/web_watch.log日志

# cat /var/log/web_watch.log
CREATE-/data/web/a-14/06/27-16:21
CREATE-/data/web/aa-14/06/27-16:21
CREATE-/data/web/aaaa-14/06/27-16:24
CREATE-/data/web/aaaaa-14/06/27-16:24

②  inotifywatch

1)概念

inotifywatch 用来收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。

2)命令格式

inotifywatch [-hvzrqf] [-e <event> ] [-t <seconds> ] [-a <event> ] [-d <event> ] <file> [ ... ]

3)选项参数

-h|--help    	            显示帮助信息
-v|--verbose 	            详细信息
@<file>       	          排除不需要监视的文件,可以是相对路径,也可以是绝对路径
--fromfile <file>         从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头
--exclude <pattern>       正则匹配需要排除的文件,大小写敏感
--excludei <pattern>      正则匹配需要排除的文件,忽略大小写。
-z|--zero                 输出表格的行和列,即使元素为空
-r|--recursive	          监视一个目录下的所有子目录
-t|--timeout <seconds>
                          设置超时时间,如果为0,则无限期地执行下去。
-e|--event <event1> [ -e|--event <event2> ... ]
                          指定监听的时间,如果省略,则侦听所有事件。
-a|--ascending <event>    以指定事件升序排列
-d|--descending <event>   以指定事件降序排列

示例1、统计/data目录所在文件系统发生的事件次数

inotifywatch -v -e create,modify,delete -t 30 -r /data

然后在另一终端中进行一些操作

# echo "test" >> /data/newfile1
...
# rm /data/newfile
rm:是否删除普通文件 "/data/newfile"?y
# rm /data/newfile1
rm:是否删除普通文件 "/data/newfile1"?y

30秒后,前一个终端会生成如下报告

# inotifywatch -v -e create,modify,delete -t 30 -r /data
Establishing watches...
Setting up watch(es) on /data
OK, /data is now being watched.
Total of 1 watches.
Finished establishing watches, now collecting statistics.
Will listen for events for 30 seconds.
total  modify  create  delete  filename
11     8       1       2       /data/

二、实验

1.配置rsync下行同步(定时同步)

(1)环境

源服务器:192.168.204.46

客户机(发起端):192.168.204.45

(2)配置源服务器

① 关闭防火墙

一般系统已默认安装rsync

③ 建立/etc/rsyncd.conf配置文件

 

 创建rsync备份目录/授权rsync用户管理备份目录,修改备份目录权限

 创建认证用户密码文件,修改文件权限

 重启rsync守护进程服务,并查看是否启动

  启动文件

(3)发起端配置

①关闭防火墙

 创建密码文件,客户端密码文件中,只需要密码即可,密码文件的权限是600

 在客户端测试推送文件

  

在源服务器上查看是否推送成功

 

 客户端在服务端拉取文件

 在客户端查看

 (4)发起端,调整 inotify 内核参数

默认的inotify机制提供了三个调控参数

  当要监控的目录、文件数量较多或者变化较频繁时,需要加大这三个参数的值。

 发起端安装 inotify-tools

 ⑤ 编译安装

 

三、问题

1.rsync启动失败

(1)问题

(2)原因分析

缺少pid文件

(3)解决方法

检查配置文件,发现路径错误

修改

2.常见错误

(1)错误一

@ERROR: auth failed on module backup
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
说明:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。

(2)错误二

password file must not be other-accessible
continuing without password file
Password:
说明:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

(3)错误三

@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
说明:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步

(4)错误四

rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
说明:防火墙问题导致,这个最好先彻底关闭防火墙,排错的基本法就是这样,无论是S还是C,还有ignore errors选项问题也会导致

(5)错误五

@ERROR: access denied to www from unknown (192.168.1.123)
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)
说明:此问题很明显,是配置选项host allow的问题,初学者喜欢一个允许段做成一个配置,然后模块又是同一个,致使导致

(6)错误六

rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(244) [generator=2.6.9]
rsync error: received SIGUSR1 (code 19) at main.c(1182) [receiver=2.6.9]
说明:导致此问题多半是服务端服务没有被正常启动,到服务器上去查查服务是否有启动,然后查看下 /var/run/rsync.pid 文件是否存在,最干脆的方法是杀死已经启动了服务,然后再次启动服务或者让脚本加入系统启动服务级别然后shutdown -r now服务器

(7)错误七

rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(604) [sender=2.6.9]
说明:原数据目录里没有数据存在

(8)错误八

@ERROR: auth failed on module bachup
 rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:服务器端该模块(backup)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。  提供正确的用户名密码解决此问题

四、总结

rsync - 快速,通用,可实现全量和增量的远程(和本地)文件复制工具。

rsync监听端口:873

rsync运行模式:C/S

client/server :客户端/服务端

在下行同步(下载)中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。
在上行同步(上传)中,同步源负责提供文档的目标位置,发起端应对该位置具有写入权限。

rsync配置文件

vim /etc/rsyncd.conf

启动rsync服务程序

#启动rsync服务程序
 rsync --daemon 
    
#启动rsync 服务,以独立监听服务的方式(守护进程)运行
 netstat -anpt | grep rsync

关闭rsync 服务

kill $(cat /var/run/rsyncd.pid) 

rm -rf /var/run/rsyncd.pid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/811761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组中出现次数超过一半的数字——剑指 Offer 39

文章目录 题目描述法一 哈希表法二 摩尔投票 题目描述 法一 哈希表 使用哈希映射&#xff08;HashMap&#xff09;来存储每个元素以及出现的次数。对于哈希映射中的每个键值对&#xff0c;键表示一个元素&#xff0c;值表示该元素出现的次数。 class Solution { public:int maj…

XCTF_very_easy_sql

简单的进行sql注入测试后发现不简单尝试一下按照提示 结合这句提示应该是内部访问&#xff0c;所以采用的手段应该是ssrf顺便看看包 唯一值得关注的是set-cookie说回ssrf唯一能使用的方式应该是Gopher协议找到了一个POST的python脚本 import urllib.parsepayload ""…

Linux上定位线上CPU飙高

【模拟场景】 写一个java main函数&#xff0c;死循环打印 System.out.println(“111111”) &#xff0c; 将其打成jar包放在linux中执行 1、通过TOP命令找到CPU耗用最厉害的那个进程的PID 2、top -H -p 进程PID 找到进程下的所有线程 可以看到 pid 为 94384的线程耗用cpu …

未来将会有更多基于 Cortana 的设备

在前些日子的 Build 大会首日 Keynote 中&#xff0c;微软正式确认 HP 跟 Intel 也正在开发基于 Cortana 平台的联网家居产品&#xff0c;这是继推出 Invoke 喇叭的 Harman Kardon 后&#xff0c;又有知名大牌加入到 Cortana 的阵营当中&#xff0c;有这样的品牌资源背景&#…

【Linux】-进程概念及进程状态(僵尸进程和孤儿进程)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

x86架构ubuntu22下运行WILL模拟器dophin

0. 环境 i5实体机ubuntu22 1. 安装依赖 $ sudo apt install build-essential git cmake ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libevdev-dev libusb-1.0-0-dev libxrandr-dev libxi-dev libpangocairo-1.0-0 qt6-base-private-dev libblueto…

MybatisPlusInterceptor实现sql拦截器(超详细)

1 . 导入pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency> 2 . 配置下MybatisPlus的yml mybatis-plus:mapper-locations:- …

ssm学生贷款管理系统java助学贷银行jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 ssm学生贷款管理系统 系统有1权限&#xff1a;管理员…

自己搭建一个KMS服务器

本文仅适合个人用户&#xff0c;商业用户使用该程序可能会面临法律风险&#xff01;&#xff01;&#xff01; 建议有经济能力的读者支持正版。 知周所众&#xff0c;Windows和Office不是免费软件。如果是新购买的品牌机&#xff0c;则应该预装有正版的Windows家庭版&#xf…

Java+bcprov库实现对称和非对称加密算法

BouncyCastle&#xff0c;即BC&#xff0c;其是一款开源的密码包&#xff0c;包含了大量的密码算法。 本篇主要演示BC库引入&#xff0c;对称加密算法AES、SM4和 非对称加密EC算法的简单实现&#xff0c;以下是实现过程。 一、将BC添加到JRE环境 前提&#xff1a;已安装JRE环…

jmeter实现webservice接口测试

其实可以用jmeter两种sampler进行webservice的测试&#xff1a; 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…

jenkins部署springboot项目(超详细讲解)

原来写了一篇博客是如何安装jenkins的&#xff0c;今天也来介绍一下怎么简单使用吧。 首先&#xff0c;我们要明确&#xff0c;jenkins自动化部署也只是代替你去做你要做的事&#xff0c; 我们梳理一下&#xff0c;你的代码写完&#xff0c;打包&#xff0c;扔到服务器上&…

tcp三次握手python实现和结果

下载抓包工具 安装 使用1 使用2 结果 红色笔为想要发送的数据。 代码 from scapy.all import * import logginglogging.getLogger(scapy.runtime).setLevel(logging.ERROR)target_ip = 172.20.211.4 target_port = 80 data = GET / HTTP/1.0 \r\n\r\ndef start_tcp(target_…

火爆全网,Charles抓包教程-辅助接口测试(二)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 功能图标 从左到右…

mysql综合练习语法总结

mysql综合练习 用于 小白练手的主要用于以后语法忘了回来看 题目 # 1、创建数据库test01_library # 2、创建表 books&#xff0c;表结构如下&#xff1a;# 3、向books表中插入记录 # 1&#xff09;不指定字段名称&#xff0c;插入第一条记录 # 2&#xff09;指定所有字段名…

经典的数组和指针结合的OJ题

一、合并两个有序数组 leetcode链接 题目描述&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递…

seata组件使用期间,获取全局事务状态

GlobalStatus枚举类展示全局事务状态 官网链接&#xff1a;http://seata.io/zh-cn/docs/user/appendix/global-transaction-status.html 获得全局事务状态 // 开启全局事务地方获取全局事务xid String xid RootContext.getXID(); // 通过全局事务xid获得GlobalStatus枚举类 …

Transformer 论文学习笔记

重新学习了一下&#xff0c;整理了一下笔记 论文&#xff1a;《Attention Is All You Need》 代码&#xff1a;http://nlp.seas.harvard.edu/annotated-transformer/ 地址&#xff1a;https://arxiv.org/abs/1706.03762v5 翻译&#xff1a;Transformer论文翻译 特点&#xff1…

【Qt】利用Tool Button控件创建下拉菜单按钮

功能描述 利用qt进行界面设计和开发&#xff0c;创建下拉按钮。 详细实现 1、在qt侧工具栏利用设计打开.ui文件 2、创建按钮 创建一个Tool Button按钮&#xff0c;并在属性窗口中的QToolButton栏中选中MenuButtonPopup属性。 3、创建action 在Action编辑器创建对应的ac…