rsync服务
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
[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
三、添加多模块名
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全网备份的过程
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 邮件服务运行