rsync

rsync数据备份

Remote Sync :简称rsync,是一种远程同步,高效的数据备份的工具。第一次备份完全备份,以后备份就是差异备份。
scp:secure copy 同样是用来进行远程复制的命令,但是每次备份数据都是完全备份

优点

可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。
压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
选择性保持:符号连接,硬链接,文件属性,权限,时间等

实验环境:

服务器:192.168.1.63
客户端:192.168.1.64

scp远程备份数据

备份文件

服务器:
[root@break html]# scp a.txt [email protected]:/tmp
[email protected]'s password: 
a.txt                                                                                               100%   10     4.1KB/s   00:00    
[root@break html]# cat a.txt 
asdfasdfs
客户端
[root@break tmp]# ls -al a.txt 
-rw-r--r--. 1 root root 10 4月  12 15:49 a.txt
[root@break tmp]# cat a.txt 
asdfasdfs

备份目录

服务器:
[root@break ~]# mkdir test
[root@break ~]# cd test/
[root@break test]# cp /boot/* ./
cp: 略过目录"/boot/efi"
cp: 略过目录"/boot/grub"
cp: 略过目录"/boot/grub2"
[root@break test]# ls -al
总用量 119224
drwxr-xr-x. 2 root root     4096 4月  12 15:53 .
dr-xr-x---. 8 root root     4096 4月  12 15:53 ..
-rw-r--r--. 1 root root   147819 4月  12 15:53 config-3.10.0-862.el7.x86_64
-rw-------. 1 root root 74037211 4月  12 15:53 initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img
-rw-------. 1 root root 31714827 4月  12 15:53 initramfs-3.10.0-862.el7.x86_64.img
-rw-r--r--. 1 root root   304926 4月  12 15:53 symvers-3.10.0-862.el7.x86_64.gz
-rw-------. 1 root root  3409143 4月  12 15:53 System.map-3.10.0-862.el7.x86_64
-rwxr-xr-x. 1 root root  6224704 4月  12 15:53 vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
-rwxr-xr-x. 1 root root  6224704 4月  12 15:53 vmlinuz-3.10.0-862.el7.x86_64
[root@break test]# cd
[root@break ~]# scp -r /root/test/ [email protected]:/tmp
[email protected]'s password: 
config-3.10.0-862.el7.x86_64                                                                        100%  144KB  19.8MB/s   00:00    
initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img                                             100%   71MB  35.3MB/s   00:02    
initramfs-3.10.0-862.el7.x86_64.img                                                                 100%   30MB  30.2MB/s   00:01    
symvers-3.10.0-862.el7.x86_64.gz                                                                    100%  298KB  21.3MB/s   00:00    
System.map-3.10.0-862.el7.x86_64                                                                    100% 3329KB  31.6MB/s   00:00    
vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e                                                   100% 6079KB  30.8MB/s   00:00    
vmlinuz-3.10.0-862.el7.x86_64    
客户端:
[root@break ~]# cd /tmp/
[root@break tmp]# ls -al
总用量 8
drwxrwxrwt.  9 root root  138 4月  12 15:54 .
dr-xr-xr-x. 17 root root  237 4月  11 22:41 ..
drwx------.  2 du   du     20 4月  12 09:07 .esd-1000
drwxrwxrwt.  2 root root    6 11月 14 06:38 .font-unix
drwxrwxrwt.  2 root root   78 4月  12 09:07 .ICE-unix
drwxr-xr-x.  2 root root 4096 4月  12 15:54 test
drwxrwxrwt.  2 root root    6 11月 14 06:38 .Test-unix
-r--r--r--.  1 root root   11 4月  12 09:06 .X0-lock
drwxrwxrwt.  2 root root   16 4月  12 09:06 .X11-unix
drwxrwxrwt.  2 root root    6 11月 14 06:38 .XIM-unix
[root@break tmp]# cd test/
[root@break test]# ls -al
总用量 119220
drwxr-xr-x. 2 root root     4096 4月  12 15:54 .
drwxrwxrwt. 9 root root      138 4月  12 15:55 ..
-rw-r--r--. 1 root root   147819 4月  12 15:54 config-3.10.0-862.el7.x86_64
-rw-------. 1 root root 74037211 4月  12 15:54 initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img
-rw-------. 1 root root 31714827 4月  12 15:54 initramfs-3.10.0-862.el7.x86_64.img
-rw-r--r--. 1 root root   304926 4月  12 15:54 symvers-3.10.0-862.el7.x86_64.gz
-rw-------. 1 root root  3409143 4月  12 15:54 System.map-3.10.0-862.el7.x86_64
-rwxr-xr-x. 1 root root  6224704 4月  12 15:54 vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
-rwxr-xr-x. 1 root root  6224704 4月  12 15:54 vmlinuz-3.10.0-862.el7.x86_64
[root@break test]# 

rsync基本介绍

采用C/S模式,进行点对点的传输,端口号为873,想备份数据的是客户端,另外一个就是服务端。
它通过一个大的服务进行管理,这个服务是xinetd,所以我们使用的时候需要安装这个服务。
xinetd监控许多小服务,通过查看端口来启动对应的服务。例如:rsync使用873端口,当我们xinetd监听到873端口,它就会使用rsync来进行响应。
数据的同步方式有2种:推和拉。
推和拉是相对于服务端的,因为服务器也是主机,服务器发送数据的时候是往外推送数据,服务器接受别人的备份数据,这个时候可以看做是服务器在拉取别人的数据。推拉是相对的。它只看你在其中所起的作用。
rsync常见的5个命令参数:也是我们实验所需要进行的命令。
-a, --archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等
-z, --compress 压缩模式, 当资料在传送到目的端进行档案压缩.
-v , --verbose 复杂的输出信息
--delete, 删除那些目标位置有的文件而备份源没有的文件
--password-file=FILE ,从 FILE 中得到密码

实战:从192.168.1.63上备份web服务器的数据到192.168.1.64上(采用root用户)

步骤,可能有点繁琐,我们会以序号来进行标记,因为我们在2台主机上进行操作,难免会进行切换,请注意

服务端:(3,5可以不设置,为了温习自己的知识和安全性考虑,可以以rput向远端的root发送备份信息)
1#安装xinetd和rsync
yum install -y xinetd rsync
3#建立测试的用户
[root@break ~]# useradd rput
[root@break ~]# echo rput:123456 | chpasswd
4#建立备份数据
[root@break ~]# cd /var/www/html/
[root@break html]# cp /boot/* ./
cp: 略过目录"/boot/efi"
cp: 略过目录"/boot/grub"
cp: 略过目录"/boot/grub2"
[root@break html]# ls
config-3.10.0-862.el7.x86_64                             System.map-3.10.0-862.el7.x86_64
initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img  vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
initramfs-3.10.0-862.el7.x86_64.img                      vmlinuz-3.10.0-862.el7.x86_64
symvers-3.10.0-862.el7.x86_64.gz

7#进行文件的备份
[root@break ~]# rsync -avz --delete /var/www/html [email protected]:/root/rsync/
[email protected]'s password: 
sending incremental file list
html/
html/System.map-3.10.0-862.el7.x86_64
html/config-3.10.0-862.el7.x86_64
html/initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img
html/initramfs-3.10.0-862.el7.x86_64.img
html/symvers-3.10.0-862.el7.x86_64.gz
html/vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
html/vmlinuz-3.10.0-862.el7.x86_64

sent 122,093,819 bytes  received 153 bytes  22,198,904.00 bytes/sec
total size is 122,063,334  speedup is 1.00
客户端:
2#安装xinetd和rsync
yum install -y xinetd rsync
#6创建接受的目录为rsync
[root@break ~]# mkdir rsync
#8查看备份是否成功
[root@break ~]# cd rsync/
[root@break rsync]# ls -al
总用量 8
drwxr-xr-x. 3 rget rget   18 4月  12 16:50 .
dr-xr-x---. 7 root root 4096 4月  12 16:35 ..
drwxrwxr-x. 2 root root 4096 4月  12 16:27 html
[root@break rsync]# cd html/
[root@break html]# ls
config-3.10.0-862.el7.x86_64                             System.map-3.10.0-862.el7.x86_64
initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img  vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
initramfs-3.10.0-862.el7.x86_64.img                      vmlinuz-3.10.0-862.el7.x86_64
symvers-3.10.0-862.el7.x86_64.gz

1安装
rsync_第1张图片

需要注意的地方:

1客户端的目录一定要写正确,写成绝对路径
2如果服务器发送的数据,指定接受端的用户一定要有权限访问要备份到的目录。实验建议用root

项目二:非系统用户备份数据

使用系统配置文件/etc/rsyncd.conf来备份数据,创建备份账户,最后把rsync以deamon方式运行
rsync.conf配置文件

全局参数:对rsync服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数生效
模块参数:定义需要通过rsync输出的目录定义的参数

全局参数

参数 说明
port 指定后台使用端口号,默认873
uid 指定当该模块传输文件时守护进程应该具有的uid
pid 指定当该模块传输文件时守护进程应该具有的gid
max connections 该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试
lock file 指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。
motd file 用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户
log file 指定rsync的日志文件
pid file 指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置
hosts allow 允许访问的客户机地址

模块参数

模板参数 说明
Comment 描述模块信息
Path 备份路径
read only yes为只允许下载,no为可以下载和上传文件到服务器
auth users 允许连接的用户
secrets file 该文件的权限一定要是600
list #是否允许查看模块信息

实战二开始

服务器:
4#实现备份
[root@break ~]# rsync -avz /var/www/html/ [email protected]::wwwroot
welcome to backup server

Password: 
sending incremental file list
./
System.map-3.10.0-862.el7.x86_64
config-3.10.0-862.el7.x86_64
initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img
initramfs-3.10.0-862.el7.x86_64.img
symvers-3.10.0-862.el7.x86_64.gz
vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
vmlinuz-3.10.0-862.el7.x86_64

sent 122,093,798 bytes  received 152 bytes  18,783,684.62 bytes/sec
total size is 122,063,334  speedup is 1.00
客户端:
#0创建用户,也就是客户端的接受者
[root@break ~]# useradd rget
#1创建配置文件,centos7有,但是centos6没有
vim /etc/rsyncd.conf
uid = root
pid = root
address = 192.168.1.64
port = 873
hosts allow = 192.168.1.0/24
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd
[wwwroot]
path = /root/rsync/
comment = userd for web-data root
read only = false
list = yes
auth users = rget
secrets file = /etc/rsync.passwd
#2创建说明文件和用户密码
[root@break ~]# vim  /etc/rsyncd.motd 
welcome to backup server
[root@break ~]# vim /etc/rsync.passwd 
rget:password123      
#3启动服务
[root@break ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@break ~]# ps -aux | grep rsync
root       4864  0.0  0.0 114740   572 ?        Ss   15:11   0:00 rsync --daemon --config=/etc/rsyncd.conf
root       8893  0.0  0.0 112720   984 pts/3    S+   17:28   0:00 grep --color=auto rsync
#4验证备份文件
[root@break ~]# cd rsync/
[root@break rsync]# ll
总用量 119216
-rw-rwxr--. 1 root root   147819 4月  12 16:26 config-3.10.0-862.el7.x86_64
-rw-rwx---. 1 root root 74037211 4月  12 16:27 initramfs-0-rescue-6e270ed56f724f0fac3246c166cb190e.img
-rw-rwx---. 1 root root 31714827 4月  12 16:27 initramfs-3.10.0-862.el7.x86_64.img
-rw-rwxr--. 1 root root   304926 4月  12 16:27 symvers-3.10.0-862.el7.x86_64.gz
-rw-rwx---. 1 root root  3409143 4月  12 16:27 System.map-3.10.0-862.el7.x86_64
-rwxrwxr-x. 1 root root  6224704 4月  12 16:27 vmlinuz-0-rescue-6e270ed56f724f0fac3246c166cb190e
-rwxrwxr-x. 1 root root  6224704 4月  12 16:27 vmlinuz-3.10.0-862.el7.x86_64

写入的内容如下:
rsync_第2张图片
客户端的备份文件
rsync_第3张图片
服务器端的文件的发送
rsync_第4张图片

创建rput和rget的目的

rput,在服务器配置的用户,主要是用来进行安全的传输,因为在我们的线上,我们使用的用户不可能是root,所以创建一个rget进行发送备份文件。
rget:在客户端配置的用户,主要是用来进行模拟在非root的用户下,想要进行文件的备份该如何进行,我们设置了密码文件,模块参数以及提示信息等等。若服务器发送的数据使用模块,则不指定模块内的用户,即便是root也不能进行传输。

创建密码文件的目的

服务器端创建密码文件是为了免交互进行数据的备份传输。
客户端创建密码文件是为了实现模板文件,声明允许接受的用户和密码

在服务器端,我们可能需要写一些脚本来进行自动定时备份,所以我们要使用免交互的方式进行文件的备份。

[root@break ~]# touch passwd
[root@break ~]# echo password123 > passwd 
[root@break ~]# chmod 600 passwd
[root@break ~]# rsync -avx /var/www/html/ [email protected]::wwwroot --password-file=passwd
welcome to backup server

sending incremental file list

sent 392 bytes  received 12 bytes  808.00 bytes/sec
total size is 122,063,334  speedup is 302,136.97

使用脚本文件备份

脚本内容

#!/bin/bash
rsync -avz --delete /var/www/html/ [email protected]::wwwroot --password-file=/root/passwd                                                                                     

在这里插入图片描述
服务器端:sh a.sh
rsync_第5张图片
客户端:查看rsync目录的内容:前后对比,我自己在备份前增加了几个txt文件
rsync_第6张图片
写入以下内容,做成自动定时备份

[root@break ~]# echo "0 12 * * * sh /root/a.sh &" >> /var/spool/cron/root

你可能感兴趣的:(rsync)