设为首页 收藏本站
查看: 1127|回复: 0

[经验分享] rsync数据备份解决方案

[复制链接]

尚未签到

发表于 2018-1-12 15:52:26 | 显示全部楼层 |阅读模式
  rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
  一、项目规则:
  1、系统环境
  

[iyunv@zabbix-client ~]# cat /etc/redhat-release
  
CentOS Linux>  
[iyunv@zabbix-client ~]# uname -r
  
3.10.0-327.el7.x86_64
  

  2、更改主机名和/etc/hosts文件 (客户端和服务端同时操作)
  

[iyunv@zabbix-server etc]# tail -2 /etc/hosts  
192.168.30.137 zabbix-server
  
192.168.30.136 zabbix-client
  

  

  测试:
  

[iyunv@rsync-server ~]# ping rsync-node1  
PING rsync-node1 (192.168.30.142) 56(84) bytes of data.
  
64 bytes from rsync-node1 (192.168.30.142): icmp_seq=1 ttl=64 time=0.788 ms
  
64 bytes from rsync-node1 (192.168.30.142): icmp_seq=2 ttl=64 time=0.392 ms
  

  二、安装rsync软件
  1、 安装rsync软件(客户端和服务端同时操作)
  

[iyunv@zabbix-client ~]# yum install rsync -y  
[iyunv@zabbix-client ~]#  rpm -qa rsync
  
rsync-3.0.9-17.el7.x86_64
  

  2、修改配置文件,设置备份模块  (服务端操作)
  

[iyunv@zabbix-server ~]# cat /etc/rsyncd.conf  
sync server
  
#created by nulige 2017-7-9
  
##rsyncd.conf start##
  
uid = rsync
  
gid = rsync
  
use chroot = no
  
max connections = 2000
  
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 = 10.0.100.1/24
  
hosts deny = 0.0.0.0/32
  
auth users = rsync_backup
  
secrets file = /etc/rsync.password
  
##################################################
  
[backup]
  
comment = backup server by nulige at 207-7-9
  
path = /data
  

  

  3、编写服务启动脚本
  

[iyunv@rsync-server ~]# vi /etc/init.d/rsync  
#
!/bin/bash  
#author:nulige
  
#this script
for start|stop rsync daemon service  
#
date:2017/7/8  

  
status1
=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')  
pidfile
="/var/run/rsyncd.pid"  
start_rsync
="rsync --daemon --config=/etc/rsyncd.conf"  

  
function rsyncstart() {
  

  
if [ "${status1}X" == "X" ];then
  

  
rm -f $pidfile
  

  
${start_rsync}
  

  
status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
  

  
if [  "${status2}X" != "X"  ];then
  

  
echo "rsync service start.......OK"
  

  
fi
  

  
else
  

  
echo "rsync service is running !"
  

  
fi
  
}
  

  
function rsyncstop() {
  

  
if [ "${status1}X" != "X" ];then
  

  
kill -9 $(cat $pidfile)
  

  
status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep')
  

  
if [ "${statusw2}X" == "X" ];then
  

  
echo "rsync service stop.......OK"
  
fi
  
else
  

  
echo "rsync service is not running !"
  

  
fi
  
}
  

  

  
function rsyncstatus() {
  

  

  
if [ "${status1}X" != "X" ];then
  

  
echo "rsync service is running !"
  

  
else
  

  
echo "rsync service is not running !"
  

  
fi
  

  
}
  

  
function rsyncrestart() {
  

  
if [ "${status1}X" == "X" ];then
  

  
echo "rsync service is not running..."
  

  
rsyncstart
  
else
  

  
rsyncstop
  

  
rsyncstart
  

  
fi
  
}
  

  
case $1 in
  

  
"start")
  
rsyncstart
  
;;
  

  
"stop")
  
rsyncstop
  
;;
  

  
"status")
  
rsyncstatus
  
;;
  

  
"restart")
  
rsyncrestart
  
;;
  

  
*)
  
echo
  
echo  "Usage: $0 start|stop|restart|status"
  
echo
  
esac
  

  #给脚本添加执行权限
[iyunv@rsync-server ~]# chmod a+x /etc/init.d/rsync

  4、启动rsync
[iyunv@rsync-server ~]# service rsync start

  rsync service start.......OK
  5、检查端口是否启动
  

#检查用户配置文件  
[iyunv@rsync-server ~]# ss -lntup|grep rsync
  
tcp    LISTEN     0      5         *:873       *:*                   users:(("rsync",pid=2344,fd=3))
  
tcp    LISTEN     0      5        :::873       :::*                  users:(("rsync",pid=2344,fd=5))
  

  
[iyunv@rsync-server ~]# ps -ef|grep rsync|grep -v grep
  
root       2344      1  0 06:40 ?        00:00:00 rsync --daemon --config=/etc/rsyncd.conf
  

  

  6、添加用户并授权
  

[iyunv@rsync-server ~]# useradd rsync -s /sbin/nologin -M
  
[iyunv@rsync-server ~]#>  
uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)
  
[iyunv@rsync-server ~]# mkdir -p /backup
  
[iyunv@rsync-server ~]# chown -R rsync /backup
  
[iyunv@rsync-server ~]# ls -ld /backup/
  
drwxr-xr-x 2 rsync root 6 Jul 10 06:44 /backup/
  

  

  7、添加认证的密码 
  

[iyunv@rsync-server ~]# echo "rsync_backup:nulige" >/etc/rsync.password  
[iyunv@rsync-server ~]# cat /etc/rsync.password
  
rsync_backup:nulige   #nulige指的是认证的密码
  

  

  8、修改权限
  

[iyunv@rsync-server ~]# chmod 600 /etc/rsync.password  
[iyunv@rsync-server ~]# ll /etc/rsync.password
  
-rw------- 1 root root 20 Jul 10 06:47 /etc/rsync.password
  

  

  9、添加开机启动项
  

[iyunv@rsync-server ~]# echo "rsync --daemon" >>/etc/rc.local  
[iyunv@rsync-server ~]# tail -1 /etc/rc.local
  
rsync --daemon
  

  三、客户端配置
  1、添加密码并授权
  

[iyunv@rsync-node1 ~]# echo "nulige" >/etc/rsync.password  
[iyunv@rsync
-node1 ~]# chmod 600 /etc/rsync.password  
[iyunv@rsync
-node1 ~]# cat /etc/rsync.password  
nulige
  

  四、配置mailx发送邮件
  1、进入目录,下载软件
  

cd /home/nulige/tools/  

  
wget ftp://ftp.iij.ad.jp/pub/linux/centos-vault/6.2/os/x86_64/Packages/mailx-12.4-6.el6.x86_64.rpm
  

  

  2、安装mailx
  

rpm -ivh mailx-12.4-6.el6.x86_64.rpm   

  3、查看版本
  

[iyunv@git-node1 script]# mailx -V  
12.4 7/29/08  
  

  4、配置mailx,添加发送邮件账号和密码。
  示例1
  vi /etc/mail.rc
  

#添加在结尾  

#send mail  
set from
=*****@hotdoor.cn  
set smtp
=mail.gxycloud.com  
set smtp
-auth-user=******@hotdoor.cn  
set smtp
-auth-password=*******  
set smtp
-auth=login  

  示例2
  

#send mail  
set from
=zhhotdoor@163.com  
set smtp
=smtp.163.com  
set smtp
-auth-user=zhhotdoor@163.com  
set smtp
-auth-password=hotdoor123  
set smtp
-auth=login  

  5、发送邮件测试
  

echo Gitlab data backup successful! | mailx -v -s " gitlab data backup" ****@hotdoor.cn  

  

  6、编写备份脚本,备份完发送邮件
  

[iyunv@rsync-node1 ~]# mkdir -p /server/script  
[iyunv@git-node1 script]# cat send_gitlab_backup.sh
  
#!/bin/sh
  
#author:nulige
  
#date:2017-7-10
  
#gitlab data backup script
  
/usr/bin/rsync -avz /data/gitlab_backup rsync_backup@10.0.100.208::backup --password-file=/etc/rsync.password
  
sleep 3000
  
echo Gitlab data backup successful! | mailx -v -s " gitlab data backup" huzh@hotdoor.cn,zhouw@hotdoor.cn
  

  给脚本授可执行权限
  

chmod a+x send_gitlab_backup.sh   

  7、测试是否能备份和发送邮件
  

sh send_gitlab_backup.sh  

  8、查看备份结果
  

[iyunv@zabbix-server gitlab_backup]# cd /data/gitlab_backup  

  
[iyunv@zabbix-server gitlab_backup]# ll
  
总用量 12537924
  
-rw------- 1 rsync rsync      40960 6月  27 19:52 1498564341_gitlab_backup.tar
  
-rw------- 1 rsync rsync      40960 6月  29 08:41 1498696909_gitlab_backup.tar
  
-rw------- 1 rsync rsync   43601920 6月  30 14:00 1498802413_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1198592000 7月   1 14:00 1498888815_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1198592000 7月   2 14:00 1498975214_gitlab_backup.tar
  
-rw------- 1 rsync rsync  621619200 7月   3 14:00 1499061614_gitlab_backup.tar
  
-rw------- 1 rsync rsync  998338560 7月   4 14:00 1499148015_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1457510400 7月   5 14:01 1499234416_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1463951360 7月   6 14:01 1499320874_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1463951360 7月   7 14:00 1499407215_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1463971840 7月   8 14:00 1499493615_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1463971840 7月   9 14:03 1499580087_gitlab_backup.tar
  
-rw------- 1 rsync rsync 1464616960 7月  10 14:03 1499666550_gitlab_backup.tar
  
-rw-r--r-- 1 rsync rsync       9837 7月   1 22:11 gitlab_configure_file.tar.gz
  
-rw-r--r-- 1 rsync rsync        142 7月   1 22:11 nginx_configure_file.tar.gz
  
-rw-r--r-- 1 rsync rsync       9436 7月   1 22:11 postfix_configure_file.tar.gz
  

  

  9、查看邮件

  10、加入定时任务
  

[iyunv@git-node1 tools]# crontab -l  

  
#gitlab data backup script
  
0 3 * * * /bin/sh /server/script/send_gitlab_backup.sh >/dev/null 2>&1
  

  

  11、只保留15天gitlab备份数据
  

[iyunv@git-node1 script]#vi del_gitlab_backup.sh  
#
!/bin/bash  
#del
15 day gitlab backup  

find /data/gitlab_backup -type f -name "*.tar" -mtime +15|xargs rm -f  

  #加入定时任务中
  

[iyunv@git-node1 script]# crontab -l  
#times
sync by lee at 2017-06-28  
*/5 * * * * /usr/sbin/ntpdate 10.0.100.208 >/dev/null 2>&1
  

  
#gitlab_backup_nulige_2017-6-27
  
0 2 * * * /bin/gitlab-rake gitlab:backup:create
  

  
#gitlab data backup script
  
0 3 * * * /bin/sh /server/script/send_gitlab_backup.sh >/dev/null 2>&1
  

  
#del 15 day gitlab backup
  
0 4 * * * /bin/sh /server/script/del_gitlab_backup.sh >/dev/null 2>&1
  

  
#gitstaticstics script
  
#0 4 * * 1 /usr/local/bin/gitstatistics.sh &
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434308-1-1.html 上篇帖子: git init 下篇帖子: 程序员必须知道的几个Git代码托管平台(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表