龙空技术网

Rsync数据同步工具介绍

运维这个圈 1999

前言:

目前同学们对“centos7配置drbd”大体比较重视,朋友们都想要知道一些“centos7配置drbd”的相关内容。那么小编同时在网摘上网罗了一些有关“centos7配置drbd””的相关知识,希望姐妹们能喜欢,兄弟们快快来学习一下吧!

一.什么是Rsync?

1.1介绍

rsync是类unix系统下的数据镜像备份工具——remote synchronization。Rsync是开源的、快速的、多功能的、可以实现全量及增量的本地或远程数据同步备份的工具,rsync相当于scp,cp,rm命令的集合。Rsync软件适用于 linux/unix/windows等多种操作系统平台。(这里主要介绍linux操作系统平台)。

二、企业应用场景

2.1企业应用介绍

在NFS共享存储中介绍过,用户上传的视频、音乐、图片、附件等一些静态资源文件都是放在NFS共享存储中的,如果没有不进行备份,当NFS共享存储出现宕机、硬盘出现故障、机房出现火灾等各种因素,那么用户将无法访问严重则出现数据丢失。所以我们需要定时备份数据。假设在上图01中,NFS共享存储A和web集群中的系统配置文件、网站程序目录及访问日志通过rsync命令推送到服务器B上备份保留。(可以先在本地按IP+日期打包,然后再推送到备份服务器B 上)。

三、Rsync服务环境准备

服务器系统角色IPCentos6.5x86_64Rsync 服务端(backup)192.168.1.108Centos6.5x86_64NFS客户端(NFS_server)192.168.1.104Centos6.5x86_64web集群端(blog02)192.168.1.107

3.1 Centos6.5x86_64 操作系统与内核版本信息

[root@backup ~]# cat /etc/redhat-release CentOS release 6.5 (Final)[root@backup ~]# uname -r2.6.32-431.el6.x86_64[root@backup ~]# uname -mx86_64[root@backup ~]# 

3.2 所有机器关闭防火墙、关闭selinux(以服务端为例)

[root@backup ~]# /etc/init.d/iptables stop[root@backup ~]# chkconfig --level 35 iptables off[root@backup ~]# setenforce 0[root@backup ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config[root@backup ~]# cat /etc/selinux/config |grep SELINUX=SELINUX=disabled

四、rsync服务端的安装与设置

4.1 部署rsync服务,需要安装下面的软件包:

Rsync

Centos6.5默认是已经安装rsync软件包的 也可以用yum install rsync -y升级到最新!

[root@backup ~]# rsync --versionrsync version 3.0.6 protocol version 30Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.Web site: : 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, ACLs, xattrs, iconv, symtimes[root@backup ~]# rpm -qa rsyncrsync-3.0.6-12.el6.x86_64[root@backup ~]# 

4.2.创建rsync的配置文件和配置它(默认是没有的)

[root@backup ~]# touch /etc/rsyncd.conf

[root@backup ~]# cat>>/etc/rsyncd.conf<<EOF

######注释说明####

uid = rsync

gid = rsync 《==========服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。 如果用nobody 用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来。所以我就偷懒,为了方便,用了root 。不过您可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。

use chroot = no 《=====yes为在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限,这里我们先将设置为no.

max connections = 2000 《====客户端最多连接数

timeout = 600

pid file = /var/run/rsyncd.pid 《====告诉进程写到 /var/run/rsyncd.pid 文件中

port = 873 《==== 注:指定运行端口,默认是873,您可以自己指定;

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log 《=====rsync 服务器的日志;

ignore errors 《===忽略IO错误

read only = false 《=====read only 是只读选择,也就是说,不让客户端上传文件到服务器上;

list = false 《==list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了;

hosts allow = 192.168.1.0/24 《== 在你可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开;

hosts deny = 0.0.0.0/32

auth users = rsync_backup 《====是必须在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开

secrets file = /etc/rsync.password 《======密码存在哪个文件

######################################################

[backup] 《====定义一个模块

path = /backup 《======指定文件目录所在位置,这是必须指定的

EOF

[root@backup ~]#

4.3配置密码文件并修改权限

[root@backup ~]# echo "rsync_backup:passwd" >/etc/rsync.password <===设置一个密码为passwd[root@backup ~]# cat /etc/rsync.password rsync_backup:passwd[root@backup ~]# [root@backup ~]# ll /etc/rsync.password -rw-r--r--. 1 root root 20 Sep 18 16:40 /etc/rsync.password[root@backup ~]# chmod 600 /etc/rsync.password 《==因为是密码所以权限要更改[root@backup ~]# ll /etc/rsync.password -rw-------. 1 root root 20 Sep 18 16:40 /etc/rsync.password[root@backup ~]# 

4.4.创建用户名与备份目录并授权(必须与模块名一样)

[root@backup ~]# useradd rsync -s /sbin/nologin -M[root@backup ~]# mkdir /backup[root@backup ~]# chown -R rsync /backup/[root@backup ~]# ls -ld /backup/drwxr-xr-x. 2 rsync root 4096 Sep 18 16:40 /backup/[root@backup ~]# 

4.5启动rsync并加入开机启动

[root@backup ~]# rsync --daemon[root@backup ~]# [root@backup ~]# ps -ef|grep rsync|grep -v greproot 11102 1 0 16:38 ? 00:00:00 rsync --daemon[root@backup ~]# [root@backup ~]# netstat -lntup|grep rsynctcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 11102/rsync tcp 0 0 :::873 :::* LISTEN 11102/rsync [root@backup ~]# [root@backup ~]# ss -lntup|grep rsynctcp LISTEN 0 5 :::873 :::* users:(("rsync",11102,5))tcp LISTEN 0 5 *:873 *:* users:(("rsync",11102,3))[root@backup ~]# [root@backup ~]# lsof -i :873COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMErsync 11102 root 3u IPv4 714576 0t0 TCP *:rsync (LISTEN)rsync 11102 root 5u IPv6 714577 0t0 TCP *:rsync (LISTEN)[root@backup ~]# [root@backup ~]# echo "rsync --daemon" >>/etc/rc.local 

服务端已经配置完毕!!!!

五.客户端配置

5.1 NFS上配置

[root@NFS_server ~]# echo "passwd" >/etc/rsync.password 创建密码文件[root@NFS_server ~]# chmod 600 /etc/rsync.password 授权[root@NFS_server ~]# ls -l /etc/rsync.password-rw------- 1 root root 7 Sep 18 16:52 /etc/rsync.password[root@NFS_server ~]#[root@NFS_server ~]# ll /tmp/total 0

5.2.blog02上配置

[root@blog02 ~]# echo "passwd" >/etc/rsync.password[root@blog02 ~]# chmod 600 /etc/rsync.password[root@blog02 ~]# ls -l /etc/rsync.password-rw-------. 1 root root 7 Sep 18 16:52 /etc/rsync.password[root@blog02 ~]#[root@blog02 ~]# ll /tmp/total 0[root@blog02 ~]#

六.备份

#######推送#####从客户端的/tmp/目录里的文件推送到服务端 /backup目录里

rsync -avz /tmp/ rsync_backup@192.168.1.108::backup –password-file=/etc/rsync.password

#####################backup这个名字与服务端模块设置的名字要一样######################

例:

[root@blog02 ~]# touch /tmp/kk.txt[root@blog02 ~]# cd /tmp/[root@blog02 tmp]# lltotal 0-rw-r--r--. 1 root root 0 Sep 18 16:58 kk.txt[root@blog02 tmp]# [root@blog02 tmp]# rsync -avz /tmp/ rsync_backup@192.168.1.108::backup --password-file=/etc/rsync.passwordsending incremental file list./kk.txt.ICE-unix/sent 109 bytes received 34 bytes 286.00 bytes/sectotal size is 0 speedup is 0.00[root@blog02 tmp]# 

在服务端查看

[root@backup ~]# ll /backup/total 0-rw-r--r--. 1 rsync rsync 0 Sep 18 2016 kk.txt 《====已经推送过来[root@backup ~]# 

#########拉取#######从服务端/backup 目录里的文件拉到本地/tmp/目录

rsync -avz rsync_backup@192.168.1.108::backup /tmp/ –password-file=/etc/rsync.password

在服务端创建k.txt文件

[root@backup ~]# touch /backup/k.txt[root@backup ~]# ll /backup/total 0-rw-r--r--. 1 rsync rsync 0 Sep 18 16:58 kk.txt-rw-r--r--. 1 root root 0 Sep 18 17:03 k.txt[root@backup ~]# 

在客户端操作

[root@blog02 tmp]# lltotal 4-rw-r--r--. 1 501 501 0 Sep 15 12:07 kk.txtdrwx------. 2 501 501 4096 Sep 6 23:13 lost+found[root@blog02 tmp]# [root@blog02 tmp]# rsync -avz rsync_backup@192.168.1.108::backup /tmp/ --password-file=/etc/rsync.passwordreceiving incremental file list./k.txtkk.txt.ICE-unix/ sent 109 bytes received 258 bytes 734.00 bytes/sectotal size is 0 speedup is 0.00[root@blog02 tmp]# [root@blog02 tmp]# lltotal 4-rw-r--r--. 1 502 502 0 Sep 18 16:58 kk.txt-rw-r--r--. 1 root root 0 Sep 18 17:03 k.txt 《===已经拉取过来drwx------. 2 501 501 4096 Sep 6 23:13 lost+found[root@blog02 tmp]# 

七.优化

7.1如果要实现远端目录与本地目录同步一样

推:备份远端数据,拉:备本地数据。 尽量不用。

拉取:

远端有什么,本地就有什么,远端没有的,本地也删除。

rsync -avz –delete rsync://rsync_backup@192.168.1.230/backup /tmp/ –password-file=/etc/rsync.password

推送:

本地有什么,远端就有什么,本地没有的,远端也删除。

rsync -avz –delete /tmp/ rsync://rsync_backup@192.168.1.230/backup –password-file=/etc/rsync.password

7.2.如果跨机房公网VPN可以用:

rsync –daemon –address=192.168.1.230(自行修改)

八.客户端一些参数配置

排除单个文件:rsync -avz –excloude=a /data1/ rsync_backup@192.168.1.230::backup –password-file=/etc/rsync.password

排除多个文件:rsync -avz –excloude={a,b} /data1/ rsync_backup@192.168.1.230::backup –password-file=/etc/rsync.password

rsync -avz –excloude=a –exclude=b /data1/ rsync_backup@192.168.1.230::backup –password-file=/etc/rsync.password

rsync -avz –excloude={a..g} /data1/ rsync_backup@192.168.1.230::backup –password-file=/etc/rsync.password

rsync -avz –excloude-from=paichu.log /data1/ rsync_backup@192.168.1.230::backup –password-file=/etc/rsync.password

服务端排除参数:

/etc/rsyncd.conf里加exclude=a b test/k.txt

tar命令的排除参数同rsync

九、利用脚本实现定时备份

9.1定时备份

每天凌晨1点(选择自己业务流量小的时段备份),把定时任务和rc.loacl+日期备份到备份服务器/backup上并以需要备份的服务器的IP加日期为目录命名。

[root@blog02 ~]# mkdir /server/scripts/ -p 《====创建服务器所以存放脚本的目录[root@blog02 ~]# cd /server/scripts/[root@blog02 scripts]# [root@blog02 scripts]# vim backup.sh 《=====以backup命名#!/bin/shpath=/backup													《===定义目录dir="`/sbin/ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)" 《====取服务器IPmkdir $path/$dir -p &&\												《==创建目录/bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F) &&\ 《==需要备份的文件/bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) &&\rsync -az $path/ rsync_backup@192.168.1.108::backup/ --password-file=/etc/rsync.password 《==推送到备份服务器上 [root@blog02 scripts]# [root@blog02 scripts]# sh backup.sh [root@blog02 scripts]# crontab -e##################date#####################################*/5 * * * * /usr/sbin/ntpdate s1a.time.edu.cn >/dev/null 2>&1 #########################backup##########################00 01 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1 《====每天凌晨1点执行脚本 [root@blog02 scripts]# 

9.2 CP到另一台机器

#######cp 脚本到另一台NFS_server需要备份的机器上##########

[root@blog02 scripts]# scp /server/scripts/backup.sh root@192.168.1.104:/server/scripts/The authenticity of host '192.168.1.104 (192.168.1.104)' can't be established.RSA key fingerprint is 8c:07:51:dc:1a:5b:3f:f2:7c:34:72:5c:7b:c6:d5:dc.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.1.104' (RSA) to the list of known hosts.root@192.168.1.104's password: backup.sh 100% 360 0.4KB/s 00:00 [root@blog02 scripts]# [root@blog02 scripts]# scp /var/spool/cron/root root@192.168.1.104:/var/spool/cron/root@192.168.1.104's password: root 100% 241 0.2KB/s 00:00 [root@blog02 scripts]# 

十.rsync优缺点

10.1优点:

1.增量备份,支持socket,集中备份

2.能更新整个目录和树和文件系统;

3.有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;

4.对于安装来说,无任何特殊权限要求;

5.对于多个文件来说,内部流水线减少文件等待的延时;

6.能用rsh、ssh 或直接端口做为传输入端口;

7.支持匿名rsync 同步文件,是理想的镜像工具;

10.2缺点:

1.大量小文件同步的时候,比对时间较长,容易使rsync进程停止。

(解决办法:打包后再同步,用drbd(后面会介绍)

2.同步大文件(10G)以上,会出现中断。

3.未完整同步前,同步的文件是隐藏文件。

标签: #centos7配置drbd