信创平台下构建rsync服务,同步与备份数据

rsync(remote synchronize,https://www.samba.org/ftp/rsync/rsync.html)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快,尤其适合实现增量备份。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync等,可以实现触发式的实时同步。rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD,此外,它在windows平台下也有相应的版本,如cwRsync和Sync2NAS等工具。信创环境下不论是终端还是服务器一般都预装了rsync,可以直接使用!

  • 可以镜像保存整个目录树和文件系统。
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
  • 无须特殊权限即可安装。
  • 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
  • 安全:可以使用scp、ssh等方式来传输文件,也可以通过直接socket连接。rsync可以实现scp的远程拷贝(rsync不支持远程到远程的拷贝,但scp支持)、cp的本地拷贝、rm删除和"ls -l"显示文件列表等功能,实现的scp/cp/rm等功能仅仅只是同步的辅助手段。
  • 支持匿名传输,以方便进行网站镜像。

例如:rsync同步复制本地文件和文件夹

要将一个本地文件夹的内容复制到另一个本地文件夹,以替换目标文件夹中的文件,常见格式是:

rsync -rtv src_folder/ dest_folder/
rsync -av src_folder/ dest_folder/

在src_folder中末尾添加了一个斜杠,阻止创建新文件夹,如果不添加斜杠,则会在目标文件夹中创建一个名为src_folder的新文件夹。

  • 参数  -r  表示递归,即它将复制源文件夹的内容以及其中的每个文件夹的内容。
  • 参数  -t  使rsync 保留从源文件夹复制的文件的修改时间。
  • 参数  -v  表示冗长,此参数将打印有关命令执行的信息,例如已成功传输的文件,因此我们可以使用它作为跟踪rsync进度的方式。
  • 参数  -a  使副本递归并保留修改时间,还会将遇到的符号链接复制为符号链接,保留权限,保留所有者和组信息以及保留设备和特殊文件。如果您要复制用户的整个主文件夹,或者要在其他位置复制系统文件夹,会需要此功能。

本文以一个实际工作中归档邮件数据的简单应用来说明:

一台存储容量较大的设备作为rsync服务器,地址: 192.168.0.43,有两个目录 :/mailbackup用于同步邮件数据,/docbackup用于同步文档和其它数据。
注:一般服务器可以就不同的硬盘分区分别建了一个挂载点(例如 mount -t ext4 /dev/sdb2  /docbackup),如下表两个分区分别挂载了/mailbackup和/docbackup目录。

[root@localhost]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        99G   11G   83G  12% /
tmpfs            32G   76K   32G   1% /dev/shm
/dev/sda1       976M   41M  885M   5% /boot
/dev/sdb1       2.0T  1.5T  426G  78% /mailbackup
/dev/sdb2       1.8T  438G  1.3T  26% /docbackup

一台邮件服务器iredmail(postfix)作为rsync客户端,邮件数据位于 /var/vmail/ 目录下,需要定期同步到rsync服务端 的mailbackup目录。
另外还有windows共享服务器作为rsync客户,数据保存在 e:/ftproot/dzs/ 目录下,需要定期同步到rsync服务端的docbackup目录。

一、配置rsync服务启动

rsync连接远程主机进行同步或备份时有两种途径:使用远程shell程序(如ssh或rsh)进行连接,或使用TCP直接连接rsync daemon。当源路径或目的路径的主机名后面包含一个冒号分隔符时,rsync使用远程shell传输;当源路径或目的路径的主机名后面包含两个冒号,或使用rsync://URL时,rsync使用TCP直接连接rsync daemon。本文中使用daemon方式提供rsync服务!

daemon方式运行时Rsync server会打开一个873 端口,等待客户端去连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。

在国产信创服务器上一般都已经预装了rsync服务包(中标麒麟龙芯服务器版V7是3.0.9,loongson中的版本是3.1.1,银河麒麟V10中预装的版本是3.1.1)。

# yum install rsync xinetd --服务安装

1. 对于负荷较重的 rsync 服务器应该使用独立运行方式
# /usr/bin/rsync --daemon

在/etc/rc.local中加入一行让rsync自动启动
/usr/local/rsync –daemon

2. 对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式,也是本文测试中的方式

# vim /etc/xinetd.d/rsync

service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

# systemclt start rsync  --启动rsync服务
# systemctl enable rsync      --开机自动启动rsync服务

# netstat -ntpl | grep 873 --查看服务是否启动 ,端口号可以在/etc/services中查看

#iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT    #iptables防火墙配置,或者临时关闭防火墙,systemctl stop firewalld.service

#setenforce 0 --关闭SELinux,默认是限制rsync权限

二、rsync服务端配置

1. 配置服务端rsync目录及权限

当rsync以daemon模式运行时,配置文件是/etc/rsyncd.conf,例如下面配置中定义了两个rsync服务目录[backup]和[dzs]。

[root@localhost dzsbackup]# cat /etc/rsyncd.conf 
uid=root
gid=root
use chroot=no
max connections=4
strict modes=yes
port=873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log

[backup]
path=/mailbackup
auth users=scihoo
uid=root
gid=root
secrets file=/mailbackup/rsync.ps
read only=no
list=no

[dzs]
path=/docbackup
auth users=scihoo
uid=root
gid=root
secrets file=/dzsbackup/rsync.ps
read only=no
list=no

2. 配置rsync密码及密码文件权限

上边的配置文件 /etc/rsyncd.conf中已经配置rsync密码文件路径“/home/rsync.ps”,格式如下(一行一个用户)

cat /dzsbackup/rsync.ps
scihoo:scihoo

 配置rsync密码文件权限

# chown root.root rsync.ps

# chmod 600 rsync.ps

# /etc/init.d/xinetd reload  #重新加载配置

三、rsync客户端配置与操作

# vi /etc/xinetd.d/rsync   //也可以不配,客户端手动启动,本测试使用手动启动方法

配置密码文件 (注:为了安全,设定密码档案的属性为:600。

# vi rsync.ps
scihoo      #和Rsync Server密码设定一样,但不需要用户名

# chown root.root rsync.ps # 注意必须给权限
# chmod 600  rsync.ps       # 必须修改权限

从服务器上下载文件到本地

# rsync -avz --password-file=/home/rsync.ps scihoo@156.18.1.27::backup/vmail  /var/vmail/

从客户端(邮件服务器)上传邮件数据到服务器上去

rsync -avz --password-file=/home/rsync.ps /var/vmail/ scihoo@156.18.0.43::backup/vmail

提示:如果出现“auth failed on module rsync ,auth user......”问题,一般就是权限设置问题,除了检查用户名密码、密码文件权限外,可以查看日志(/var/log/messages)会有详细信息。

四、定时任务

定时每天00:15做一次数据同步,将邮件服务器作为rsync客户端,156.18.0.43作为服务端。

做一个脚本文件 /home/rsync_cron.sh

[root@mail ~]# cat /home/rsync_cron.sh 
#!/bin/bash
rsync -avz --password-file=/home/rsync.ps /var/vmail/ scihoo@156.18.0.43::backup/vmail

命令:crontab -e来将上面的脚本命令加入计划任务(注:crontab执行日志保存在系统目录/var/log/cron中,默认root权限可以查看)

[root@localhost ~]# crontab -e
# 增加下面一行,crontab格式参见下图
# rsync upload to 156.18.0.43:backup, everydate 0:15
15  0   *   *   *  /bin/bash  /home/rsync_cron.sh >/dev/null

#查看当前保存的计划任务用
crontab -l

# 脚本执行权限
[root@localhost ~]#chmod -R 777 rsync_cron.sh

     

crontab格式说明
  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

五、 windows下 rsync备份

Rsync本身是一个Linux平台软件,在Windows端对应的是cwRsync,使用方法和原来的Rsync类似。由于cwRsync只是用Cygwin将rsync移植到Windows平台的。
这里只使用cwRsync客户端。解压到硬盘上,执行以下cwrsync.cmd就会生成一个home子目录。
客户端执行的时候要在客户端的bin目录下,可以将客户端的程序目录添加进PATH变量,注意,不是安装目录的根目录,而是程序的目录,既bin目录。比如C:\Program Files (x86)\ICW\Bin
1 .windows客户机上 c:\cwrsync\bin加一个密码文件rsync.ps

2. 在CMD中执行下面命令(/cygdrive/e/ftproot/dzs即为E:\ftproot\dzs):

c:\cwrsync\bin>rsync -avz --password-file=rsync.ps  /cygdrive/e/ftproot/dzs scihoo@156.18.0.43::backup/citymail

3. 计划任务,可以将命令编辑为bat文档,再添加到操作系统的任务计划中。

六、图形化方式管理rsync及其任务(非Daemon)

rsync有一些图形化的管理工具,例如Grsync、GAdmin-Rsync和QSync等等;Grsync 和GAdmin-Rsync是基于GTK+图形库,与Grsync比较类似,QSync是基于QT库的Rsync工具。Windows也有相似的图形化工具,如Grsync for windows(基于GTK+库)0.6,Qtdsync(基于QT3库)0.6等,使用cygwin环境的rsync工具。还可以使用webmin-syncmin 进行Web方式管理。

但是,这些图形化工具都是用于节点-节点之间的文件同步,不支持Daemon方式的Rsync服务。

1. rsync前端管理工具Grsync

以Grsync为例,Grsync 的主要功能包括:具有常用的 rsync 选项,可以保存多个配置,在 rsync 执行前后能够运行自定义的命令,可用于 Shell 脚本和 crontab,支持导入/导出配置等。在龙芯的网站中有Grsync1.2.5安装包,这是rpm包的链接,可以从Grsync网站下载最新的1.2.8软件包,自行编译安装(可能需要安装yum instyall gtk2-devel,intltool等依赖包),再 make && make install即可。在开始菜单->系统工具中会增加一个Grsync快捷方式,运行后如下图。

菜单下面的工具栏分别是:Session下拉选择、增加一个任务(Session),删除一个任务,模拟测试任务和执行任务。还有rsync命令查看等功能。

增加一个Rsync任务

如上图增加一个Gsync任务(Session),填写选项后,点击工具栏的执行任务按钮,可以看到任务执行情况。

Rsync任务执行结果

2. Rsync的Webmin扩展Syncmin

另外一个管理方式是Web方式管理,这里主要介绍Webmin中Syncmin扩展模块的使用。 Syncmin基本上是直接使用ssh协议的工作模式,没有后台Daemon概念。可以创建一个个的文件同步任务并进行时间调度。

参考《龙芯架构下安装使用webmin管理工具》一文,下载并安装Syncmin扩展,管理界面如下图:

syncmin管理Rsync任务(基于SSH)

 进入Syncmin主界面,列表是建立的所有同步任务,【模块配置】是对rsync的基本参数进行管理,一般可用默认。【Create File Sync】可用创建一个新的Rsync同步任务,如下图:
注:这里Sourc Host实际上是指的安装了Webmin服务器的计算机,SourcePath也就是这台webmin服务器上的文件目录。

Rsync同步任务选项

Syncmin中可以为每个任务创建执行计划,勾选【Enabled】,然后设置执行的事件,下图是每天的3:00分执行一次同步任务。

Rsync定期执行配置

 在webmin服务器上用:crontab -l 列出root用户的Crontab,会发现新增了一项:00 3 * * * /etc/webmin/syncmin/scripts/12010135856.sh > /dev/null            (文件名就是Job号)

#cat /etc/webmin/syncmin/scripts/12010135856.sh
/usr/bin/rsync -av --rsh=ssh --temp-dir=/tmp --port=55555 --delete --rsync-path=/usr/bin/rsync /baiduNetdiskDownload/ root@192.168.14.211:/root/download/ --password-file=/etc/webmin/syncmin/data/12010135856.sec

七、TimeMachine:Back In Time快照工具

Rsync是一个双向同步的工具,很多时候还需要一个能保存/恢复历史版本的在线同步或备份工具,就像Apple的Timemachine,可以使用backintime工具(GitHub - bit-team/backintime: Back In Time - A simple backup tool for Linux),也可以在龙芯FTP上下载。Back In Time是基于rsync技术,支持 Snapshot(快照式)备份,能够设定备份计划,让你在指定的时间完成系统备份。采用Python开发,Back In Time提供有 GNOME 和 KDE 4 界面。使用手册https://backintime.readthedocs.io/。

Back In Time会对那些你选择的目录创建快照,但是只会恢复那些拥有写权限的目录。你可以对快照进行加密并且存储在网络设备、外部硬盘或者是本地的文件系统中。Back In Time只会对那些改变过的文件进行更新。在设置>选项标签中,你可以选择在没有变化发生的时候禁用快照。 Back In Time的快照时间根据计划设定,每天、每周、每个月或者是每天的某个或某几个时间段,或者是每次重启之后。你可以在主工具栏的菜单中自己更改计划时间。Back In Time适合于基于文件夹或者是基于文件的回滚操作,但是如果你想对整个文件系统进行回滚也是同样可行的。恢复一个快照相当简单,只要选择它,并且选择在哪里进行恢复就可以了,取决于你是只想恢复几个文件夹还是对整个系统进行恢复。

创建一个配置(也就是一个文件备份任务),可以新建和编辑配置,如下图增加一个名为Baidu的配置,模式支持本地、本地加密、SSH、SSH加密,SSH可以将快照保存在远端的SSH服务器上(需要ssfs支持,yum install ssfs)。第一步是确定快照的位置,下图保存在“/root/下载” 位置,也可以是一个挂载的本地/远程文件系统(远程挂载有一定的限制,参考使用手册),第二步是制定要备份的目录(略),第三步是设定日程表。

创建/编辑快照配置

如图,是back In Time主界面,工具栏分别是:配置选择,创建快照,刷新快照列表,编辑快照......。点击快照,如果备份目录有文件变化(通过rsync判断),就生成一个新的快照。

back In Time主界面

下图是一个示例,右边有多个快照(不同时间),在16:52的时候快照中有文件dbeaver.png,后来误删除了(见左边文件管理器),需要恢复。首先找到有这个dbeaver.png文件的快照版本。

需要恢复的文件所在的快照

在要恢复的文件上鼠标右键,选择恢复,将dbeaver.png恢复到原来的目录(也可以用恢复....,指定恢复的目录),执行结果如下图:

恢复以前快照中保存的dbeaver.png文件

附录:

  1. rsync的介绍以及在备份方面的应用》非常详细介绍rsync用于各种备份场景。
  2. rsync基本命令用法》详细介绍了rsync工作机制
  3.  rsync基本用法参考rsync - 一个小运维 - 博客园等文。
  4. 企业实时同步方案----Sersync介绍》,数据实时同步方案中都常用rsync实现同步,例如Sersync 项目利用 Inotify 和 Rsync实现对服务器数据实时同步, Inotify 监控 Sersync 所在服务器上文件系统的事件变化,而Rsync 进行数据同步。Sersync 方案优于 Inotify-tools 和 Openduckbill方案。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值