35-综合架构-rsync守护进程模式

rsync服务

image

rsync的参数:

-v 显示详细同步过程
-z  备份同步时候进行压缩,对备份的文件在传输时进行压缩处理
--delete(危险)  目标必须与源文件一样
--exclude    排除
-a
    -r  递归复制
    -l  复制软链接
    -t   mtime
    -o   保持所有者不变
    -g   保持所属组不变
    -p   保持权限不变
    -D   保持设备信息不变

--exclude 排除的用法

把/oldboy/下的文件推送到本地的data目录下,排除oldboy01到oldboy04

[14:49 root@backup ~]# mkdir -p /oldboy
[14:50 root@backup ~]# touch /oldboy/oldboy{01..10}.txt
[14:50 root@backup ~]# rsync -avz /oldboy/ rsync_backup@backup::data --exclude=oldboy{01..4}.txt
Password: 
sending incremental file list
./
oldboy05.txt
oldboy06.txt
oldboy07.txt
oldboy08.txt
oldboy09.txt
oldboy10.txt

sent 380 bytes  received 141 bytes  148.86 bytes/sec
total size is 0  speedup is 0.00

守护进程模式—服务端和客户端

rsync daemon(守护进程)

sshd
crond
rsync服务端
rsync客户端


1.rsync服务端

第一步先配置文件/etc/rsyncd.conf

image
[5:37 root@backup ~]# vim /etc/rsyncd.conf 
▽                                        
##Rsync server                           
##created by oldboy 15:01 2009-6-5       
##rsyncd.conf start##                    
uid = rsync                          #UID管理备份目录的用户 (虚拟用户)
gid = rsync                          #GID管理备份目录的用户组(虚拟用户)
use chroot = no                      #安全功能,数据是否锁定到备份目录
fake super = yes                     #不用root用户也可以存储文件的完整属性
max connections = 2000               #最大连接数,同时多少客户端访问
timeout = 600                        #超时时间(秒)
pid file = /var/run/rsyncd.pid       #pid进程号 所在文件
lock file = /var/run/rsync.lock      #锁文件lock 比如两个窗口同时运行yum
log file = /var/log/rsyncd.log       #日志文件,查看报错,排错必备
ignore errors                        #忽略错误
read only = false                    #关闭只读
list = false                         #不允许列表
hosts allow = 172.16.1.0/24          #allow准许哪些主机可以访问
#hosts deny = 0.0.0.0/32             #deny 拒绝哪些主机不可以访问
auth users = rsync_backup            #指定认证用户(不存在),远程虚拟链接用户
secrets file = /etc/rsync.password   #存放密码的文件,权限 必须600
###################################
[data]                                   #模块名 一半与目录的名字相同
comment = www by old0boy 13:14 2019-5-20 #说明注释
path = /data                             #指定服务端用户备份的共享目录

在CentOS 7中fake super如果关闭就没有权限了

步骤:

一、首先在服务端backup进行操作

1.添加虚拟用户rsync

[15:58 root@backup ~]# usedradd -s /sbin/nologin -M rsync
[15:58 root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)

2.创建/data目录并修改所有者

[15:58 root@backup ~]# mkdir -p /data
[15:59 root@backup ~]# ll -d /data
drwxr-xr-x 2 root root 6 May 20 15:59 /data
[15:59 root@backup ~]# chown rsync.rsync /data/
[16:00 root@backup ~]# ll -d /data
drwxr-xr-x 2 rsync rsync 6 May 20 15:59 /data

3.创建密码文件password并修改权限为600
用户名和密码文件必须和/etc/rsyncd.conf下的一样

[16:00 root@backup ~]# echo 'rsync_backup:123456' >/etc/rsync.password
[16:01 root@backup ~]# chmod 600 /etc/rsync.password 
[16:02 root@backup ~]# ll /etc/rsync.password 
-rw------- 1 root root 20 May 20 16:01 /etc/rsync.password
[16:02 root@backup ~]# cat /etc/rsync.password 
rsync_backup:123456

完成这三步后我们检查一下看下是否有未修改的地方:

[16:02 root@backup ~]# grep rsync /etc/passwd
rsync:x:1001:1001::/home/rsync:/sbin/nologin
[16:06 root@backup ~]# ll -d /data
drwxr-xr-x 2 rsync rsync 6 May 20 15:59 /data
[16:06 root@backup ~]# ll /etc/rsync.password 
-rw------- 1 root root 20 May 20 16:01 /etc/rsync.password
[16:06 root@backup ~]# cat /etc/rsync.password 
rsync_backup:123456

4.启动rsync服务(默认端口号是873)必须记住

systemctl restart rsyncd.service
systemctl enable rsyncd.service

[16:13 root@backup ~]# systemctl restart rsyncd.service
[16:13 root@backup ~]# ps -ef|grep rsync
root       7686      1  0 16:13 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       7689   7432  0 16:13 pts/0    00:00:00 grep --color=auto rsync

5.检查端口和进程查看是否启动

ps -ef|grep rsync
 ss -lntup|grep 873
netstat -lntup|grep 873

6.自己给自己推送一看看是否开启成功

[16:17 root@backup ~]# ll /data/
total 0
[16:19 root@backup ~]# rsync -avz /etc/hosts [email protected]::data
Password: 
sending incremental file list
hosts

sent 221 bytes  received 43 bytes  75.43 bytes/sec
total size is 349  speedup is 1.32
[16:20 root@backup ~]# ll /data/
total 4
-rw-r--r-- 1 rsync rsync 349 May 17 10:57 hosts

如果有报错的话可以进入/var/log/rsyncd.log查看日志看看哪里出问题了

[16:21 root@backup ~]# cat /var/log/rsyncd.log 

二、然后在客户端nfs01进行操作

1.创建密码文件password并修改权限为600

[17:16 root@nfs01 ~]# echo 123456 >/etc/rsync.password 
[17:16 root@nfs01 ~]# chmod 600 /etc/rsync.password 
[17:16 root@nfs01 ~]# ll -d /etc/rsync.password 
-rw------- 1 root root 7 May 20 17:16 /etc/rsync.password

2.进行一下推送:在客户端下把/etc/hostname推送到服务端backup下

--password-file=/etc/rsync.password 可以免密登录

[17:20 root@nfs01 ~]# rsync -avz /etc/hostname [email protected]::data --password-file=/etc/rsync.password
sending incremental file list
hostname

sent 101 bytes  received 43 bytes  288.00 bytes/sec
total size is 6  speedup is 0.04

去服务端backup下看一下:

[17:21 root@backup ~]# ll /data/
total 20
-rw-r--r--  1 rsync rsync    6 May 16 17:44 hostname

rsync -avz /etc/hostname [email protected]::data --password-file=/etc/rsync.password

这条命令的执行流程https://www.processon.com/view/link/5ce271dae4b0e03e42153e63

image

三、添加多模块名

1.创建目录backup并修改所有者和所属组

[17:51 root@backup ~]# mkdir /backup
[17:51 root@backup ~]# chown rsync.rsync /backup
[17:52 root@backup ~]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 6 May 20 17:51 /backup/

2.修改rsync配置文件添加第二个模块名

[17:52 root@backup ~]# vim /etc/rsyncd.conf
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
fake super = yes
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 = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[data]
comment = www by old0boy 13:14 2019-5-20
path = /data
#####################################        ***
[backup]                                     ***
comment = www by old0boy 13:14 2019-5-20     ***
path = /backup                               ***

3.进行一下推送:在客户端下把/etc/hostname推送到服务端backup下的backup模块

[17:46 root@nfs01 ~]# rsync -avz /etc/hostname [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
hostname

sent 101 bytes  received 43 bytes  288.00 bytes/sec
total size is 6  speedup is 0.04

在服务端查看一下:成功

[17:52 root@backup ~]# ll /backup/
total 4
-rw-r--r-- 1 rsync rsync 6 May 16 17:44 hostname


预习:企业实战项目:rsync全网备份的过程

image

1.准备俩台机器

web01  10.0.0.7
backup 10.0.0.41

某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:

1.每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
rsync守护进程模式 
定时任务 (脚本)

具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
#扩展要求/backup/ip地址命名目录中
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。

4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。

发邮件:    
1.注册一个163的邮箱    
2.保证 postfix 邮件服务运行

你可能感兴趣的:(35-综合架构-rsync守护进程模式)