rsync全网备份项目

主要内容:

1.分析什么东西需要备份

2.整体的思路

3.rsync服务

4.备份命令和脚本以及定时任务的书写测试

一、那些文件需要备份

1.配置文件:

包括:
(1)/etc/ 下的配置文件
(2)/var/log/日志下的文件:

/var/log/messages
/var/log/secure
/var/log/cron
/var/log/rsyncd.log
/var/log/nginx/access.log
(3)/var/spoot/cron/

2.网站的代码
3.用户的数据

包括:

(1) 数据库里的文件
(2)存储中的数据

二、整体思路

1.rsync服务的配置,启动,检查等(详见简书rsync守护进程模式https://www.jianshu.com/p/2b39603d5b5a
2.备份的命令和脚本测试
3.定时任务的书写和测试

三、rsync服务

1.rsync服务端(backup服务端)
(1)创建用户
[root@backup ~]# useradd -s /sbin/nologin  -M rsync
[root@backup ~]# grep 'rsync' /etc/passwd
rsync:x:1001:1001::/home/rsync:/sbin/nologin
(2)创建共享目录,修改所属用户和组
[root@backup ~]# mkdir /backup
[root@backup ~]# chown rsync.rsync  /backup/
[root@backup ~]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 6 May 22 09:13 /backup/
3.创建密码文件,并修改权限为600
[root@backup ~]# echo 'rsync_backup:123456' >/etc/rsync.password 
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw------- 1 root root 0 May 22 09:14 /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password 
rsync_backup:123456
4.修改配置文件
[root@backup ~]# vim /etc/rsyncd.conf 
#Rsync server
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super = yes
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.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = www by old0boy 14:18 2012-1-13
path = /backup 
5.启动和开机自动启动
[root@backup ~]# systemctl restart rsyncd
[root@backup ~]# systemctl is-active rsyncd
active
[root@backup ~]# systemctl is-enabled rsyncd
disabled
[root@backup ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@backup ~]# systemctl is-enabled rsyncd
enabled
[root@backup ~]# ps -ef |grep 'rsync'
root       8067      1  0 09:21 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       8102   7459  0 09:22 pts/0    00:00:00 grep --color=auto rsync
[root@backup ~]# ss -lntup |grep 'rsync'
tcp    LISTEN     0      5         *:873                   *:*                   users:(("rsync",pid=8067,fd=3))
tcp    LISTEN     0      5        :::873                  :::*                   users:(("rsync",pid=8067,fd=5))
6.测试
[root@backup ~]# rsync -avz /etc/hostname  rsync_backup@172.16.1.41::backup
Password: 
sending incremental file list
hostname

sent 102 bytes  received 43 bytes  41.43 bytes/sec
total size is 7  speedup is 0.05
[root@backup ~]# tree /backup/
/backup/
└── hostname

0 directories, 1 file
[root@backup ~]# cat /backup/hostname 
backup
2.rsync客户端
1.密码文件和修改权限
[root@web01 ~]# echo '123456' >/etc/rsync.password
[root@web01 ~]# chmod 600 /etc/rsync.password
[root@web01 ~]# ll /etc/rsync.password
-rw------- 1 root root 7 May 22 09:25 /etc/rsync.password
[root@web01 ~]# cat /etc/rsync.password
123456
2.测试

(1)web01服务器:

[root@web01 ~]# rsync -avz /etc/hosts  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
hosts

sent 221 bytes  received 43 bytes  528.00 bytes/sec
total size is 349  speedup is 1.32

(2)backup服务器

[root@backup ~]# tree /backup/
/backup/
├── hostname
└── hosts

0 directories, 2 files
[root@backup ~]# cat /backup/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5      lb01
172.16.1.6      lb02
172.16.1.7      web01
172.16.1.8      web02
172.16.1.31     nfs01
172.16.1.41     backup
172.16.1.51     db01 db01.etiantian.org
172.16.1.61     m01

四、备份命令和脚本:

1.客户端:
(1)第一步:创建ip地址命名的目录:
[root@web01 ~]# IP=`hostname -I |awk '{print $2}'`
[root@web01 ~]# echo $IP
172.16.1.7
[root@web01 ~]# mkdir -p /backup/$IP
[root@web01 ~]# tree /backup/
/backup/
└── 172.16.1.7

1 directory, 0 files
(2)第二步 打包压缩文件到这个目录下并以时间命名
[root@web01 ~]# DATE=`date +%F-%w`
[root@web01 ~]# echo $DATE
2019-05-22-3
[root@web01 ~]# tar zcf /backup/$IP/conf-$DATE.tar.gz   /etc/ 
tar: Removing leading `/' from member names
[root@web01 ~]# tree /backup/
/backup/
└── 172.16.1.7
    └── conf-2019-05-22-3.tar.gz

1 directory, 1 file
(3)第三步 制作MD5校验码,并放到创建的目录下
[root@web01 ~]# HOST=`hostname`
[root@web01 ~]# echo $HOST
web01
[root@web01 ~]# find /backup/ -type f -name '*.tar.gz' |xargs md5sum >/backup/$IP/conf-$HOST.md5
[root@web01 ~]# tree /backup/
/backup/
└── 172.16.1.7
    ├── conf-2019-05-22-3.tar.gz
    └── conf-web01.md5

1 directory, 2 files
[root@web01 ~]# md5sum -c /backup/$IP/conf-$HOST.md5
/backup/172.16.1.7/conf-2019-05-22-3.tar.gz: OK
(4)第四步 把备份推送到backup服务器的backup模块下
[root@web01 ~]# #备份推送到backup服务器的backup模块下
[root@web01 ~]# rsync -avz /backup/  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
./
172.16.1.7/
172.16.1.7/conf-2019-05-22-3.tar.gz
172.16.1.7/conf-web01.md5

sent 10,016,550 bytes  received 73 bytes  6,677,748.67 bytes/sec
total size is 10,217,175  speedup is 1.02
####到backup服务器下查看
[root@backup ~]# tree /backup/
/backup/
├── 172.16.1.7
│   ├── conf-2019-05-22-3.tar.gz
│   └── conf-web01.md5
├── hostname
└── hosts

1 directory, 4 files
(5)第五步 删除7天之前的备份
[root@web01 ~]# find /backup/ -type f -name 'conf-*' -mtime +7 |xargs rm -f
[root@web01 ~]# ll /backup/172.16.1.7/
total 0
(6) 第六步 书写脚本
 [root@web02 ~]# vim /server/scripts/bak.sh
#!/bin/bash
#bianlaing
HOST=`hostname`
DATE=`date +%F-%w`
IP=`hostname -I |awk '{print $2}'`
#mkdir
mkdir -p /backup/$IP
#tar
tar zcf /backup/$IP/conf-$DATE-$HOST.tar.gz  /var/spool/cron/root /etc/rc.local /server/scripts/ /et
c/sysconfig/iptables /var/html/www/  /app/logs/ /var/log/messages /var/log/secure /var/log/cron  /va
r/log/rsyncd.log /etc/

#make md5
md5sum /backup/$IP/conf-$DATE-$HOST.tar.gz  >/backup/$IP/conf-$DATE-$HOST.md5
#bash
rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#del 7 day ago md5 and tar file
find /backup/ -type f -name 'conf*' -mtime +7 |xargs rm -f
(7)执行脚本进行测试:
[root@web02 ~]# sh -x /server/scripts/bak.sh 
++ hostname
+ HOST=web02
++ date +%F-%w
+ DATE=2019-05-22-3
++ awk '{print $2}'
++ hostname -I
+ IP=172.16.1.8
+ mkdir -p /backup/172.16.1.8
+ tar zcf /backup/172.16.1.8/conf-2019-05-22-3-web02.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts/ /etc/sysconfig/iptables /var/html/www/ /app/logs/ /var/log/messages /var/log/secure /var/log/cron /var/log/rsyncd.log /etc/
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
+ md5sum /backup/172.16.1.8/conf-2019-05-22-3-web02.tar.gz
+ rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
+ find /backup/ -type f -name 'conf*' -mtime +7
+ xargs rm -f
[root@web02 ~]# tree /backup/
/backup/
└── 172.16.1.8
    ├── conf-2019-05-22-3-web02.md5
    └── conf-2019-05-22-3-web02.tar.gz

1 directory, 2 files
########到backup服务旗下查看是否推送过去了
[root@backup ~]# tree /backup/
/backup/
├── 172.16.1.8
│   ├── conf-2019-05-22-3-web02.md5
│   └── conf-2019-05-22-3-web02.tar.gz
└── chekmd5-2019-05-22-3.txt

1 directory, 3 files
(8)书写定时任务并进行测试
[root@web02 ~]# crontab -e
#bak web01 bash backup server
* *  * * *  sh  /server/scripts/bak.sh  >/dev/null >2&1
##########
测试成功后修改为我们所需要的
[root@web02 ~]# crontab -e
#bak web01 bash backup server
00 00  * * *  sh  /server/scripts/bak.sh  >/dev/null >2&1
[root@web02 ~]# 
2.服务端:
(1)校验MD5信息
[root@backup ~]# md5sum -c /backup/172.16.1.8/conf-2019-05-22-3-web02.md5  >/backup/chekmd5-2019-05-22-3.txt 
[root@backup ~]# cat /backup/chekmd5-2019-05-22-3.txt 
/backup/172.16.1.8/conf-2019-05-22-3-web02.tar.gz: OK
(2)删除180天前的备份文件但是保留周六的
[root@backup ~]# find /backup/ -type f -name 'conf*' ! -name '*-6*'  -mtime +180 |xargs rm -f
(3)修改邮件服务的配置文件
set from=17794256261@163.com  smtp=smtp.163.com smtp-auth-user=17794256261  smtp-auth-password=#授权码 开启邮箱smtp服务后后获取   smtp-auth=login
(4)发送邮件
[root@backup ~]# date 
Wed May 22 19:48:46 CST 2019
[root@backup ~]# mail -s "CHEK WEB01 BACK MD5" 17794256261@163.com  </backup/chekmd5-$DATE.txt
邮件服务截图.png
(5)书写脚本并检测
[root@backup ~]# vim /server/scripts/chek.sh 
#!/bin/bash
DATE=`date +%F-%w`
#del 180 day ago and save Mon file 
find /backup/ -type f -name 'conf*' ! -name '*-6*'  -mtime +180 |xargs rm -f
#chek md5
find /backup/ -type f -name '*.md5' |xargs md5sum -c >/backup/chekmd5-$DATE.txt
#mail
mail -s "CHEK WEB01 BACK MD5" 17794256261@163.com  </backup/chekmd5-$DATE.txt
################################
检测
[root@backup ~]# sh -x /server/scripts/chek.sh 
++ date +%F-%w
+ DATE=2019-05-22-3
+ find /backup/ -type f -name 'conf*' '!' -name '*-6*' -mtime +180
+ xargs rm -f
+ find /backup/ -type f -name '*.md5'
+ xargs md5sum -c
+ mail -s 'CHEK WEB01 BACK MD5' 17794256261@163.com
(6)书写定时任务检测后改为我们需要的时间
[root@backup ~]# crontab -e
#chek bak file
* *  * * *    sh  /server/scripts/chek.sh   >/dev/null >2&1
########################
修改为我们需要的时间
[root@backup ~]# crontab -e
#chek bak file
00 00  * * *    sh  /server/scripts/chek.sh   >/dev/null >2&1

完成全网备份的服务端和客户端的配置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容