rsync 服务部署

学习笔记
例子
#配置 rsync 服务端 10.0.0.41/24 172.16.1.41/24 backup

1.安装

[root@10.0.0.41__backup ~]# rsync –version  《《=====查看rsync版本
rsync  version 3.1.2  protocol version 31  《《=====版本号为3.1.2
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,

[root@10.0.0.41backup ~]# yum install rsync
如果没有可以下载	

2.创建虚拟用户 (模块使用)

useradd -s /sbin/nologin -M rsync

3.创建对应目录(/backup) 并授权用户为rsync用户来管理rsync服务

mkdir –p /server/scripts				---脚本文件存放路径
mkdir –p /backup 						
chown -R rsync.rsync /backup

4.配置对应密码文件并授权600

echo “ncs:123456”  >/etc/rsync.password
[root@backup ~]# chmod 600  /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
ncs.123456
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 4月  15 11:51 /etc/rsync.password

5.配置文件/etc/rsyncd.conf

[root@c2-10.0.041__backup ~]# cp /etc/rsyncd.conf {,.ori}  《《====操作前先备份

cat >/etc/rsyncd.conf<<EOF
#rsync_config_______________start
uid = rsync                                      《《《《=====管理备份目录的用户
gid = rsync                                      《《《《====管理备份目录的用户组
use chroot = no                                  《《《《====安全功能,数据是否锁定到备份目录
fake super =  yes                                《《====不需要root也可以存储文件的完整属性
max connections = 200                            《《《《===并发连接,同时多少客户端访问
timeout = 600                                    《《《《===超时连接
pid file = /var/run/rsyncd.pid                   《《《===进程号所在文件
lock file = /var/run/rsync.lock                  《《《===锁文件
log file = /var/log/rsyncd.log                   《《《===日志文件,查看报错
ignore errors                                    《《《《==忽略错误
read only = false                                《《《《====可写
list = false                                     《《《《《===不允许列表
hosts allow = 172.16.1.0/24                      《《《《===哪些主机可以访问           二选一
hosts deny = 0.0.0.0/32                          《《《《===哪些主机不允许访问
auth users = ncs		                         《《《《《====远程连接的虚拟用户
secrets file = /etc/rsync.password               《《《《《====存放密码的文件: 格式:用户名:密码 权限必须为600
[backup]                                         《《《《《======【模块名】
comment = welcome to ncs backup!    	         《《《《《===== 说明注释
path = /backup/                                  《《《《《《====服务端用户备份的目录, 用户和组为rsync 因为 uid  gid 都是rsync
EOF

6.启动和检查rsync服务的状态

rsync --daemon           C6
systemctl  start rsyncd  现在启动
systemctl status rsyncd  查看是否开启
systemctl enable rsyncd  设置开机自启动

检查是否开启
ps-ef|grep sync|grep -v grep
netstat -lutup|grep  873
rsync 的默认端口为873

————————————rsync服务端基础配置完成————————————————

###配置 客户端 10.0.0.n/24 172.16.1.n/24
1.安装

[root@c2-10.0.041__backup ~]# rsync –version  《《=====查看rsync版本
rsync  version 3.1.2  protocol version 31  《《=====版本号为3.1.2
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,

[root@c2-10.0.041__backup ~]# yum install rsync –y
如果没有可以下载

方法1:认证密码文件 (只需要写密码)

[root@nfs01 ~]# echo "123456" > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
123456
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 4月  15 11:55 /etc/rsync.password

方法2: 环境变量必须是大写 export

[root@nfs01 ~]# echo 'export  RSYNC_PASSWORD=123456' >>/etc/bashrc 
[root@nfs01 ~]# tail -1 /etc/bashrc 
 export RSYNC_PASSWORD=123456
[root@nfs01 ~]# . /etc/bashrc 
[root@nfs01 ~]# echo $RSYNC_PASSWORD

Rsync 传输模式
1.本地传输方式 (单个主机本地之间的数据传输 类似cp命令)

local:   rsync   [OPTION...]   SRC...   [DEST]

#本地拷贝数示例
[root@backup ~] rsync  -avz  /etc/passwd    /tmp
rsync               #备份命令(等同cp)
[OPTION...]         #选项
SRC...              #本地源文件
[DEST]              #本地目标文件

2.远程通道传输方式:通过ssh通道传输数据,类似scp 命令

(1) #pull 拉取数据命令

Pull:rsync  [OPTION...]   [USER@]HOST:SRC...   [DEST]

#Pull  拉取数据示例
[root@backup ~] rsync   -avz  root@172.16.1.41:/etc/hostname  ./   #拉取远程文件到当前目录
[root@backup ~] rsync -avz root@172.16.1.41:/root/  /backup/      #拉取远程目录下的所有文件
[root@backup ~] rsync  -avz  root@172.16.1.41:/root  /backup/    #拉取远程目录以及目录下的所有文件  
pull  拉取数据命令
rsync            #备份命令(等同cp)
OPTION...       #选项
USER@          #目标主机的系统用户
HOST          #目标主机IP地址或者域名
SRC...       #目标主机源文件
DEST        #下载至本地哪个位置

(2) #Push 推送命令

Push: rsync [OPTION...]  SRC...   [USER@]HOST::DEST

#push  推送数据示例
rsync  -avz   /backup/2019.txt  root@172.16.1.41:/tmp/
rsync               #备份命令(等同cp)
OPTION...          #选项
SRC...            #本地源文件
USER@            #目标主机的系统用户
HOST            #目标主机IP地址或者域名
DEST           #目标对应位置

(3) #示例

拉取rsync备份服务器的"backup模块"数据至本地的/tmp目录
#rsync  -avz  rsync_backup@172.16.1.41::backup/  /tmp/  --password-file=/etc/rsync.password

将本地/tmp目录推送至 rsync备份服务器的backup模块
rsync  -avz /tmp  rsync_bakcup@172.16.1.41::backup/  --password-file=/etc/rsync.password

###Rsync 企业备份项目

某公司里有一台 web 服务器,里面的数据很重要,但是如果硬盘坏了,数据
就会丢失,现在领导要求把数据做备份,这样 web 服务器数据丢失可以进行恢复,
要求如下:
每天晚上 00 点整在 web 服务器 A 上打包备份系统配置文件、网站程序目录
及访问日志并通过 rsync 命令推送到服务器 B 上备份保留(备份思路可以是先在
本地按日期打包,然后再推到备份服务器 B 上)


所有服务器的备份目录必须都为/backup
mkdir  -p  /backup
要备份的系统配置文件包括但不限于:
a) 定时任务服务的配置文件 (/var/spool/cron/root) (适合 web 和 nfs 服
务器)。
b) 开机自启动的配置文件 (/etc/rc.local) (适合 web 和 nfs 服务器)。
c) 日常脚本的目录 (/server/scripts ( (适合 web 和 nfs 服务器)。
 Web 服务器站点目录假定为/var/html/www,如果没有可以先模拟创建。
 Web 服务器访问日志路径假定为/app/logs,如果没有可以先模拟创建。
#########第一种方法
tar zcf /backup/bak.$(date +%F_%w -d “-1day”)tar.gz var/spool/cron/root  etc/rc.local  /server/scripts  var/html/www app/logs  &>/dev/null  
########第二种方法
tar -zchf /backup/bak.$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables ./var/html/www ./app/logs
 Web 服务器本地保留打包后的 7 天备份数据即可(本地留存不能多于 7 天,
因为太多硬盘会满)
find /backup/  -type  f  -mtime +7|xargs  rm -f

 备份服务器 backup 上,保留最近 7 天的备份数据,同时保留 6 个月内每周一
的所有数据副本。
##第一种方法
find /backup/ -type f ! -name “*_Tuesday” -mtime +180 -- delete

##第二种方法
#判断周一
if  [ $(date +%w  -d  “-1day”)  -eq  2 ]
then
    DATE=”$(date +%F_%w -d  “-1day”)_week1”
else
    DATE+”$(date +%F_%w  -d  “-1day”)”
fi
find  /backup/  -type  f  -mtime +7|xargs  rm –f &&\
find  /backup/  -type  f  !   -name  “*week1*” –mtime  +180|xargs rm –f

 备份服务器上,要按照备份数据服务器的内网 IP 为目录保存备份,备份的文
件按照时间名字保存。
IP=`hostname  -I|awk ‘{print $2}’`
mkdir -p /backup/$IP
 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据是否完整
进行检查。
在web01打包得时候就采集打包内容得指纹
##第一种方法
find /backup/  -type  f  -name  ‘$DATE.tar.gz’|xargs  md5sum>/backup/$IP/bak_$IP_$DATE.fail
##第二种方法
find /backup -type f -name “bak.$(date +%F_%A).tar.gz"|xargs md5sum >/backup/$IP/bak.$(date +%F_%A).fail

在rsync服务器上检查推送来得指纹
LOGPATH=/tmp/fail.log
find backup/$IP  -type f  -name  “*.fail”|xargs md5sum  -c &>/LOGPATH

每天晚上 00 点整在 Web 服务器上打包备份系统配置文件、网站程序目录及
访问日志并通过 rsync 命令推送备份服务器 backup 上备份保留
rsync -az /backup/ ncs@172.16.1.41::backup --password-file=/etc/rsync.password

#脚本编辑

客户端: (web)
#!/bin/bash
#路径
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#取出IP
IP=`hostname  -I|awk '{print $2}'`
#以IP为名
mkdir -p /backup/$IP
#判断周一
if  [ $(date +%w)  -eq  2 ]
then
    DATE="$(date +%F_%w -d  -1day)_week1"
else
    DATE="$(date +%F_%w -d  -1day)"
fi
#打包目录
tar zcfhP /backup/$IP/bak.$DATE.tar.gz var/spool/cron/root etc/rc.local /server/scripts var/html/www app/logs /etc/sysconfig/iptables &>/dev/null
#删除七天以前
find /backup/  -type  f  -mtime +7|xargs  rm -f
#采集指纹
find /backup/  -type  f  -name  "bak.$DATE.tar.gz"|xargs md5sum >/backup/$IP/bak.$DATE.fail
#推送 
rsync -az /backup/ ncs@172.16.1.41::backup --password-file=/etc/rsync.password
if[ $? -ne 0 ]
then
    echo “$(hostname -i) backup is failed” |mail -s "result" 邮箱号
fi




服务端:(backup)

#!/bin/bash
#路径
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#指纹得路径
LOGPATH=/tmp/fail.log
#判断周一
if  [ $(date +%w)  -eq  2 ]
then
    DATE="$(date +%F_%w –d  -1day)_week1"
else
    DATE="$(date +%F_%w -d  -1day)"
fi
#查看指纹
find /backup/  -type f  -name  "bak.$DATE.fail"|xargs md5sum -c >$LOGPATH
#保留180天 周一
find  /backup/ -type f ! -name "*week1*" -mtime +180|xargs rm -f
#发送邮件
mail -s "$(date +%F_%T) backup data error" xxxxxx@163.com <$LOGPATH

每天早晨8:00 把备份成功或失败结果信息发给系统管理员邮箱中。

`
#邮箱配置文件

set from=xxxxxxx@163.com
set smtp=smtp.163.com
set smtp-auth-user=xxxxx@qq.com
set smtp-auth-password=xxxxxxxxxxx
set smtp-auth=login



放入/etc/mail.rc中
改为自己的配置 倒数第二行是授权码  邮箱设置 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值