rsync远程同步

简介: rsync远程同步

     正确有效的备份方案是保障系统及数据安全的重要手段。在服务器中,通常会结合计划任务,Shell脚本来执行本地备份。为了进一步提高备份的可靠性,使用异地备份也是非常有必要的。

配置rsync源服务器(服务器端)

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

下面介绍如何配置rsync同步源

       rsync作为同步源时以守护进程运行,为其他客户机提供备份源。配置rsync同步源需要建立配置文件rsyncd.conf,创建备份账号,然后将rsync程序以守护进程("--daemon"选项)方式运行。指备份操作的远程服务器,也称为备份源。

建立配置文件

配置文件rsyncd.conf位于/etc/目录下,下面将以源目录/var/www/html、备份账号backuper为例

1.  [root@localhost ~]# vim /etc/rsyncd.conf
2.  uid = nobody
3.  gid = nobody
4.  use chroot = yes                            //禁锢在源目标
5.  address = 192.168.1.10                      //监听地址
6.  port 873                                    //监听端口
7.  log file = /var/log/rsyncd.log              //日志文件位置
8.  pid file = /var/run/rsyncd.pid              //存放进程ID的文件位置
9.  hosts allow = 192.168.1.0/24                //允许访问的客户端地址
10.  [wwwroot]                                   //共享模块名称
11.          path = /var/www/html                //源目录的实际路径
12.          comment = aaa                       //描述
13.          read  only = yes                    //是否为只读
14.          dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
15.                                              //同步时不再压缩的文件类型
16.          auth users = backuper               //授权用户
17.          secrets file = /etc/rsyncd_users.db //存放账号信息的数据文件

       为了安全性考虑,对于rsync的同步源最好仅允许以只读方式同步。另外,通不可以采用匿名的方式,只要将其中的"auth users"和"secrets file" 配置记录去掉就可以了。

为备份账户创建数据文件

       根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为“backuper”,密码为“pwd123”。由于账号信息采用明文存放,因此应调整文件权限,避免账号信息泄露。

1.  [root@localhost ~]# vim /etc/rsyncd_users.db
2.  backuper:pwd123
3.  [root@localhost ~]# chmod 600 /etc/rsyncd_users.db

       备份用户backuper需要对源目标/var/www/html有相应的读取权限,实际上只要other组有读取权限,则备份用户backuper和运行用户nobody也就有读取权限了。初始环境的虚拟机可能没有该目录,创建一个就可以。

1.  [root@localhost ~]# mkdir -p /var/www/html
2.  [root@localhost ~]# ls -ld /var/www/html
3.  drwxr-xr-x 2 root root 6 Jun 17 16:16 /var/www/html

启动rsync服务程序

1.  [root@localhost ~]# rsync --daemon                      //开启服务
2.  [root@localhost ~]# netstat -anpt | grep rsync
3.  tcp        0      0 192.168.1.10:873        0.0.0.0:*               LISTEN      5080/rsync

关闭rsync服务可以采用kill进行的方式

[root@localhost ~]# kill $(cat /var/run/rsyncd.pid)

使用rsync备份工具(客户端)

       有了同步源服务器之后,就可以使用rsync工具来执行远程同步了。实际上同步源与发起端可以是同一台主机(不常见),其效果相当于本地备份而不是异地备份。

rsync命令的基本用法

       最简单的rsync用法类似于cp命令。例如,可以将文件/etc/fstab、目录/boot/grub同步备份到/opt目录下。

1.  [root@localhost ~]# rsync /etc/fstab /opt
2.  [root@localhost ~]# rsync -rl /etc/fstab /boot/grub /opt

命令格式及常用备份选项

1.  rsync [选项] 原始位置 目标位置
2.  -r :递归模式,包含目录及子目录中的所有文件。
3.  -l : 对于符号链接文件仍然复制为符号链接。
4.  -v : 显示同步过程的详细。
5.  -a :归档模式,保留文件的权限、属性等信息,等同于组合选项"-rlptdoD"
6.  -z : 在传输文件时进行压缩。
7.  -p :保留文件的权限标记。
8.  -t : 保留文件的时间标记。
9.  -g :保留文件的属组标记(仅超级用户使用)。
10.  -o :保留文件的属主标记(仅超级用户使用)。
11.  -H :保留硬链接文件。
12.  -A :保留ACL属性信息。
13.  -D :保留设备文件及其他特殊文件。
14.  --delete :删除目标位置有,而原始位置没有的文件。
15.  --checksum :根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。

配置源的表示方法

       rsync同步源的资源表示方式为”用户名@服务器IP地址::共享模块名“或者“rsync://用户名@服务器IP地址/共享模块名”

执行以下操作将访问rsync同步源,将指定的资源下载到本地/root目录下进行备份。

1.  [root@localhost ~]# rsync -avz backuper@192.168.1.10::wwwroot /root
2.  或
3.  [root@localhost ~]# rsync -avz rsync://backuper@192.168.1.10/wwwroot /root

rsync备份操作示例

执行以下操作将访问源服务器中的wwwroot共享模块,并下载到本地/myweb目录下。

1.  [root@localhost ~]# mkdir /myweb
2.  [root@localhost ~]# rsync -avzH --delete backuper@192.168.1.10::wwwroot /myweb
3.  Password:                                                           //验证backuper用户的密码
4.  receiving incremental file list
5.  ./
6.  1.txt                                                               //源服务器中/html下的文件
7.  
8.  sent 83 bytes  received 147 bytes  51.11 bytes/sec
9.  total size is 0  speedup is 0.00
10.  [root@localhost ~]# ls /myweb/
11.  1.txt

       实际生产环境中的备份工作通常是按计划重复执行的。例如,每天晚上十点对服务器的网站目录做一次同步,定期任务可以交给crond服务来完成。

       为了在同步过程中不用输入密码,需要创建一个密码文件,保存backuper用户的密码,如/etc/server.pass。在执行rsync同步时使用选项"--password-file=/etc/server.pass"指定即可。

1.  [root@localhost ~]# vim /etc/server.pass
2.  pwd123
3.  [root@localhost ~]# chmod 600 /etc/server.pass
4.  [root@localhost ~]# crontab -e
5.  00 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.1.10::wwwroot /myweb
6.  [root@localhost ~]# systemctl restart crond
7.  [root@localhost ~]# systemctl enable crond

配置inotify+rsync实时同步

       linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件的存取,删除,移动,修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

       将notify机制与rsync工具相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静默等待状态,这样就避免了按固定周期备份时的延迟性、周期过密等问题。

调整inotify内核参数(客户端)

       在linux内核中,默认的inotify机制提供了三个调控参数:max_queue_events、max_user_instances、max_user_watches,分别表示监控事件队列(16384),最多监控实例数(128),每个实例最多监控文件数(8192)。

1.  [root@localhost ~]# cat /proc/sys/fs/inotify/max_queued_events 
2.  16384
3.  [root@localhost ~]# cat /proc/sys/fs/inotify/max_user_instances 
4.  128
5.  [root@localhost ~]# cat /proc/sys/fs/inotify/max_user_watches 
6.  8192

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

1.  [root@localhost ~]# vim /etc/sysctl.conf
2.  ......  //省略部分
3.  fs.inotify.max_queued_events = 16384
4.  fs.inotify.max_user_instances = 1024
5.  fs.inotify.max_user_watches = 1048576
6.  [root@localhost ~]# sysctl -p

安装inotify-tools

       使用inotify机制还需要安装inotify-tools,以便提供inotifywait、inotifywatch辅助工具程序,用来监控、汇总改动情况。inotify-tools可以从网站inotify-tools下载。

1.  [root@localhost ~]# mount /dev/cdrom /media
2.  mount: /dev/sr0 写保护,将以只读方式挂载
3.  [root@localhost ~]# tar zxf /media/inotify-tools-3.14.tar.gz -C /usr/src
4.  [root@localhost ~]# cd /usr/src/
5.  debug/              inotify-tools-3.14/ kernels/
6.  [root@localhost ~]# cd /usr/src/inotify-tools-3.14/
7.  [root@localhost inotify-tools-3.14]# ./configure && make && make install

       以监控网站目录/var/www/html为例,可以先执行"inotifywait"命令,然后在另打开一个终端向/var/www/html目录下添加文件、移动文件,跟踪屏幕将会输出结果。其中,选项"-e"用来指定要监控哪些事件,选项"-m"表示持续监控,选项"-r"表示递归整个目录,选项"-q"简化输出信息。

1.  [root@localhost ~]# mkdir -p /var/www/html
2.  [root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html
3.  /var/www/html/ CREATE a.txt                     //创建a.tzt文件

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

编写触发式同步脚本

1.  [root@localhost ~]# vim /opt/inotify_rsync.sh
2.  #!/bin/bash
3.  A="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
4.  B="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.1.10::wwwroot"
5.  $A | while read a b c               //一旦读取到$A命令的输出结果就执行do后面的语句
6.  do
7.   $B
8.  done
9.  [root@localhost ~]# chmod +x /opt/inotify_rsync.sh 
10.  [root@localhost ~]# echo '/opt/inotify_rsync.sh' >> /etc/rc.local       //将脚本文件追加到系统服务中

源服务器端的配置

1.  [root@localhost ~]# vim /etc/rsyncd.conf 
2.  read  only = no                         //将只读权限yes改为no
3.  [root@localhost ~]# chmod 777 /var/www/html/
4.  [root@localhost ~]#  kill $(cat /var/run/rsyncd.pid)        //关闭rsyncd服务
5.  [root@localhost ~]# rsync --daemon                          //开启rsyncd服务

客户端执行脚本

[root@localhost ~]# /opt/inotify_rsync.sh

打开一个客户机终端切换到/var/www/html目录下,执行添加、删除文件等操作。

1.  [root@localhost html]# ls
2.  a.txt
3.  [root@localhost html]# touch b.txt

分别在执行前后查看服务器端的/var/www/html目录

1.  [root@localhost html]# ls
2.  1.txt
3.  [root@localhost html]# ls
4.  a.txt  b.txt


相关文章
|
8月前
|
监控 算法 Unix
rsync远程同步
rsync远程同步
101 0
|
监控 算法 Linux
使用 Rsync 实现远程同步,以及实时同步
Rsync 全称为:Remote Sync(远程同步),是一款开源的快速备份工具,可以在不同主机间镜像同步整个目录树,支持增量备份,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用(Linux 系统默认安装)
1120 0
使用 Rsync 实现远程同步,以及实时同步
|
监控 Linux 网络安全
|
监控 安全 关系型数据库
rsync—远程同步(二)
rsync—远程同步(二)
rsync—远程同步(二)
|
消息中间件 缓存 监控
rsync远程同步(下)
一、rsync介绍 1.1 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
130 0
|
监控 算法 安全
rsync远程同步(上)
一、rsync介绍 1.1 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
273 0
|
监控 安全 数据安全/隐私保护
|
安全
Rsync远程同步配置
# rsync服务端配置 # 安装rsync软件包 yum -y install rsync # 生成rsyncd.
870 0
|
分布式计算 Hadoop 开发工具
Rsync 实现远程同步
         介绍   rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
1704 0
|
Apache 数据安全/隐私保护