在脚本中运用rsync——使用服务的方式进行同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在脚本中运用rsync——使用服务的方式进行同步相关的知识,希望对你有一定的参考价值。

rsync以服务方式同步

环境:192.168.1.223和192.168.1.200主机ip
在192.168.1.223服务端上,编辑/etc/rsyncd.conf配置文件

port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.1.223
[path]
path=/usr/local/src/tmp
use chroot=true
max connections=4
read only=no
list=false
uid=root
gid=root
auth users=user
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.1.200

启动rsync服务,rsync服务同步文件时需要停止firewalld、iptables或放行配置文件中定义的873端口,启动rsync服务: rsync --daemon

[[email protected] tmp]# systemctl stop firewalld
[[email protected] tmp]# rsync --daemon

在192.168.1.200上推送同步一个文件或推送同步目录,这里同步的是一个文件,::两个冒号表示指定模块,模块设定了传输的文件路径,传输时使用模块名代替详细的目录路径

----------------------推送文件到服务端
[[email protected] src]# rsync -avP /usr/local/src/tmp/1.txt 192.168.1.223::path/1-2.txt
sending incremental file list
1.txt
           0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)

sent 65 bytes received 27 bytes 184.00 bytes/sec
total size is 0 speedup is 0.00
---------------------拉取服务端的文件,可以是拉取目录
[[email protected] tmp]# rsync -avP  192.168.1.223::path/jisuan.py /usr/local/src/tmp/
receiving incremental file list
jisuan.py
         278 100%  271.48kB/s    0:00:00 (xfer#1, to-check=0/1)

sent 42 bytes  received 367 bytes  818.00 bytes/sec
total size is 278  speedup is 0.68
[[email protected] tmp]# ls
1.txt  jisuan.py

配置文件中配置项的解释

prot:指定rsync服务运行的端口,默认是873
log file:指定日志文件存储的路径
pid file:指定pid文件,这个文件涉及服务启动、停止进程等管理操作
address : 指定rsync服务的IP ,如果服务器上有多个IP,可以指定一个IP作为rsync服务的ip,不指定ip则是在该服务器所有的ip地址上提供服务
[] 模块名称,自定义,可代替详细目录路径
path : 指定同步数据存放的目录路径
use chroot:(false|true) 在传输文件时首先chroot到path参数所指定目录下,传输数据时会在服务端把所有传输文件限制在path设置的目录下,如果path设置的目录中有软连接文件时,且软连接在path设定的目录以外的其他目录下,则不能同步该软连接的源文件,同时导致同步出错,如果同步的数据中有软连接文件时,建议设置成false(否,假)
max connections 指定最大链接数,默认0,没有限制
read only ture|false 如果为true 则不能同步数据到该模块设置的目录下(是|否)
list 当用户查询服务器上的模块时,是否列出显示,设定为true(是)表示列出,false(否)不列出
uid/gid 用于指定同步时是以哪个用户和组身份传输,同步存储的话设置的用户必须对存储的目录有读写权限,否则不能同步
auth users 在服务端指定同步时认证使用的用户
secrets file 在服务端指定同步时使用用户的密码文件路径,如果不指定则表示不使用密码验证,密码权限修改为600,只让root用户可读,用户密码写入格式为:user:password
hosts allow 指定允许访问链接的主机,可以设置为ip或一个ip网段,多个ip使用空格隔开
客户端同步推送及拉取时可以指定服务端设定的用户认证的密码,用于脚本不能交互输入的需求,该密码文件存储在客户端上,为了安全起见将其设置为仅root可读的600权限

客户端无交互式使用用户密码认证同步

客户端指定密码同步,服务端不想使用输入面交互需要将服务端设置的认证用户的密码存储到本地的一个目录下,这里是存在了/etc/rsync-pass这个文件中,直接写入认证用户的密码,文件权限需要设置为600,执行rsync同步如下:
rsync -avL [email protected]::path/Python* /usr/local/src/tmp/ --password-file=/etc/rsync-pass

[[email protected] tmp]# rsync -avL [email protected]::path/Python* /usr/local/src/tmp/ --password-file=/etc/rsync-pass
receiving incremental file list
Python-3.7.0.tgz

sent 42 bytes received 22751371 bytes 9100565.20 bytes/sec
total size is 22745726 speedup is 1.00
[[email protected] tmp]# ls
1.txt jisuan.py Python-3.7.0.tgz
[[email protected] tmp]# cat /etc/rsync-pass 
1234567

linux系统日志

/var/log/messages日志,系统中记录开机启动加载信息、用户登录信息、网络、内核等记录
系统中存有一个日志切割机制,日志的滚动,在增长到一定级别了,就会自动切割

dmesg命令

dmesg命令会把系统硬件相关的日志列出来,这个日志是保存在内存中的,并不是一个文件

假如你的网卡有问题了,硬盘损坏了,都会记录在这个日志中

dmesg -c //清空当前日志,但是一重启这个系统,又会生成这些日志

/var/log/dmesg日志文件

/var/log/dmesg 这是一个日志文件,这个日志文件和 dmesg命令 没有任何关联,它是系统启动的一个日志,记录的信息

last命令

last命令,查看你正确的登录历史,调用的文件/var/log/wtmp

记录是是谁,在哪里,来源IP,时间,登录的时长都会有记录

/var/log/wtmp日志是一个二进制文件,不能直接cat查看的,只能用last命令去查看

lastb命令
lastb命令,查看登录失败的用户,对应的文件时/var/log/btmp 日志

/var/log/btmp也是二进制文件,不能直接cat的

screen工具
安装screen:yum install -y screen
直接执行screen打开一个虚拟的终端
挂起screen到后台执行,按ctrl+a,然后按d可挂起到后台执行
查看并进入打开的screen虚拟终端内,-r指定screen的id

[[email protected] tmp]# screen -ls
There is a screen on:
 13061.pts-0.localhost  (Detached)
1 Socket in /var/run/screen/S-root.
[[email protected] tmp]# screen -r 13061
[screen is terminating

创建一个自定义的screen运行的ID名称,方便记忆这个screen进程运行的是哪种任务
screen -S "自定义易识别的ID名"
secreen -r ?id或自定义名可进入虚拟的screen终端

以上是关于在脚本中运用rsync——使用服务的方式进行同步的主要内容,如果未能解决你的问题,请参考以下文章

rsync 全网备份

rsync同步服务

我想开发一个 Rsync 脚本以递归方式将在一台服务器上创建的文件/文件夹列表复制到另一台服务器

实战案例:用rsync+inotify+shell脚本实现/www目录实时同步

rsync 目录备份脚本

rsync启动脚本编写