rsync:一次配置实践

2022-06-17  本文已影响0人  robot_test_boy

Remote Synchronize简称rsync,这是一款可以远程同步文件的软件,同步过程采用rsync加密算法保证了文件安全,并且同步的文件可保持原文件的属性(比如权限、时间等)不变。

服务器A:配置为rsync服务器(假设IP为192.168.61.130)

#安装rsync软件

[root@localhost ~]# yum install rsync

#安装xinetd

[root@localhost ~]# yum yum install xinetd

#配置xinetd、rsync开机自启动

[root@localhost ~]# chkconfig xinetd on

[root@localhost ~]# chkconfig rsync on

#手工创建rsync的配置文件/etc/rsyncd.conf

[root@localhost ~]# cat /etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 10

strict mode = yes

port = 873

[backup]

path = /root

comment = Root Dir

ignore errors

read only = yes

list = no

auth users = john

secret file = /etc/rsync.sec

#配置密码文件/etc/rsync.sec并授予600权限

[root@localhost ~]# cat /etc/rsync.sec

john:wang001

[root@localhost ~]# chmod 600 /etc/rsync.sec

#重启xinetd以激活rsync

[root@localhost ~]# service xinetd restart

#确认rsync已经运行

[root@localhost ~]# netstat-a | grep rsync

tcp        0      0 *:rsync      *:*      LISTEN

服务器B:配置为rsync客户端(假设IP为192.168.61.131)

#安装rsync软件

[root@localhost ~]# yum install rsync

#配置rsync客户端密码文件并授予600权限

[root@localhost ~]# cat /etc/rsync.sec

wang001

[root@localhost ~]# chmod 600 /etc/rsync.sec

#创建目录/root/rsync_dir,用于同步服务器A[backup]模块中的文件

[root@localhost ~]# mkdir rsync_dir

#测试同步,把服务器A /root目录中的全部文件同步到本地/root/rsync_dir目录

[root@localhost ~]# rsync  -vzrtopg                --progress  --delete john@192.168.61.130::backup  /root/rsync_dir  --password-file=/etc/rsync.sec

命令说明:从远程机器的backup目录备份到本地/root/rsync_dir,以rsync协议登录认证,以远程机器文件为主删除本地多余的文件。备份传输采用压缩,递归各个目录,保持文件的时间属性,属主,权限和用户组。

rsync命令格式

rsync 命令的基本格式有多种,分别是:

# 仅在本地备份

# rsync [OPTION] SRC DEST

# 本地数据备份到远程机器,登录认证使用ssh协议(push)

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

# 本地数据备份到远程机器,登录认证使用rsync协议(push)

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

# 远程机器的数据备份到本地机器,登录认证使用ssh协议(pull)

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

# 远程机器的数据备份到本地机器,登录认证使用rsync协议(pull)

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

其中,SRC:用来表示要备份的目标数据所在的位置(路径);DEST:用于表示将数据备份到什么位置。

ssh 协议和 rsync协议的区别在于,rsync 协议在使用时需要额外配置,增加了工作量,但优势是更加安全;反之,ssh 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。

OPTION参数说明

-v:显示输出过程

-z:压缩

-a:多参数集合 (-rtopgDl)

-r:递归

-t:保存修改时间属性

-o:保持属主不变

-p:保持权限不变

-g:保持用户组不变

-l:保持拷贝软连接

-q:安静的拷贝

--delete:删除DEST中SRC没有的文件

--exclude:排除

-P:等同于 --partial 断点续传

--bwlimit=KBPS:限速IO带宽,单位kb/s

※企业常用参数组合:

-avz 或者 -vzrtopg

脚步化实现

最后脚本化以上rsync过程,增加服务器是否存活的判断,并增加日志使rsync过程更加清晰,这样便于在运行出错时排查问题。

#!/bin/bash

RSYNC_SERVER=192.168.61.130

RSYNC_USER=john

RSYNC_MODULE=backup

RSYNC_PASS=/etc/rsync.sec

RSYNC_LOG=/var/run/rsync.log

LOCAL_DIR=/root/rsync_dir

RSYNC=/usr/bin/rsync

PING=/bin/ping

run_rsync() {

      echo "Starting Rsync at `date`" | tee-a $RSYNC_LOG

      $RSYNC -vzrtopg --progress --delete  $RSYNC_USER@$RSYNC_SERVER::$RSYNC_MODULE  $LOCAL_DIR --password-file=$RSYNC_PASS

      echo "Rsync Finished at `date`" | tee-a $RSYNC_LOG

}

test_alive() {

      $PING $RSYNC_SERVER -c 3-w 3

      if [ $?-ne 0 ]; then

              echo "Server down at `date`"  >> $RSYNC_LOG

              exit 1

      fi

}

test_alive > /dev/null 2>&1

run_rsync

部分内容来自王军老师的《Linux系统命令及Shell脚本实践指南》

上一篇 下一篇

猜你喜欢

热点阅读