ubuntu部署rsync+crond实现定时备份

1.rsync简介

rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,**scp每次都是全量拷贝,而rsync可以增量拷贝。**当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。

rsync - 快速,通用,可实现全量和增量的远程(和本地)文件复制工具。

rsync监听端口:873

rsync运行模式:C/S

client/server :客户端/服务端

官方链接资料:https://www.samba.org/ftp/rsync/rsync.html

2. 有什么作用?

工作中需要定时/实时数据备份,本地服务器目录、不同机器、不同机房之间的数据备份。都可以用rsync完成

3.rsync优缺点

优点:

  1. 可以增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物);socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务。
  2. 可以限速进行数据的备份或恢复操作。
  3. 远程SHELL通道模式还可以加密(SSH)传输
  4. 支持匿名认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像]
  5. 保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p
  6. 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。(--exclude

缺点:

  1. 大量小文件时进行同步备份,比对的时间较长,有时候会导致rsync进程停止运行或者进程挂起; 解决方法:

    a. 打包后再同步;

    b. drbd(文件系统同步复制block)。

  2. 同步大文件,比如:10G这样的,有时也会出现问题,导致rsync进程中断,未完整同步前,是隐藏文件,但是会占用磁盘空间(ls -al查看)。直到同步完成后,将隐藏文件改成正常文件。而且,每中断一次,生成一个隐藏文件。

4. rsync功能特性

支持拷贝普通文件与特殊文件,如链接文件,设备文件等;

支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能;

可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变。

可以实现增量复制,既只复制发生变化的数据,因此数据传输效率很高;

可以使用rcp、rsh、ssh等方式配合进行隧道和加密传输文件(rsync本身不对数据加密)

可以通过socket(进程方式)传输文件和数据(服务端客户端)

支持匿名或认证(无需系统用户)进程模式传输,安全地进行数据备份及镜像

5.增量复制原理介绍

默认情况下,在备份复制数据时Rsync通过其独特的“quick check”算法,它仅复制大小或者修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化复制,但需要指定相应的参数,甚至可以实现只复制一个文件里有变化的内容部分,所以可以实现快速的备份复制数据,即采用增量复制方法对数据信息进行复制,与传统cp,scp拷贝工具的全量拷贝截然不同,增量复制数据,在效率上远远高于全量复制;

ubuntu部署rsync+crond实现定时备份

  • 在centos5系统上,rsync的版本是2.x:

    • 同步增量复制的原理是把所有的文件比对一遍,然后进行数据同步
  • Centos6/7,rsync版本是3.x:

    • 增量复制数据原理是,一边比对,一边复制。
  • Ubuntu,rsync版本是3.x

ubuntu 14.01之后 默认安装rsync,但是没有开启;我们把他打开即可

从增量复制上而言,rsync3.x比rsync2.x更有优势!

rsync --version

底层代码算法

使用quick check算法,只对增量的部分进行复制,根据大小属性的变化进行复制。

底层代码:https://coolshell.cn/articles/7425.html

6.rsync三种工作模式

6.1本地模式(local mode )

rsync [option] SRC [DEST]
rsync命令 参数选项 【源目录或文件】 目的目录或文件

rsync /etc/hosts /opt

6.1.1 rsync复制 类似于cp

rsync [OPTION]... SRC...[DEST]

普通 复制 时间改变了

root@ip-172-31-17-90:~# rsync /etc/hosts /opt
root@ip-172-31-17-90:~# ls /opt
cni  containerd  gitlab  hosts
root@ip-172-31-17-90:~# \cp /etc/hosts /opt
root@ip-172-31-17-90:~# ls -l /etc/hosts /opt/hosts
-rw-r--r-- 1 root root 221 May 14  2019 /etc/hosts
-rw-r--r-- 1 root root 221 Jan  8 13:54 /opt/hosts

使用参数,保持属性;

root@ip-172-31-17-90:~# rsync -zrtopg /etc/hosts /opt/

root@ip-172-31-17-90:~# ls -l /etc/hosts /opt/hosts
-rw-r--r-- 1 root root 221 May 14  2019 /etc/hosts
-rw-r--r-- 1 root root 221 May 14  2019 /opt/hosts

Ps:

-rw-r--r--.
.是表示selinux状态的;
如果没有点就没有开启selinux
#getenforce

6.1.2通过加参数可以实现删除,相当于rm命令

清空内容

#新建空文件
root@ip-172-31-17-90:~# touch /null.txt

root@ip-172-31-17-90:~# cat /opt/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

#使用空文件进行删除
root@ip-172-31-17-90:~# rsync -r --delete /null.txt /opt/hosts
root@ip-172-31-17-90:~# cat /opt/hosts
root@ip-172-31-17-90:~#

删除文件

让后面的n和前面的/null保持一致

root@ip-172-31-17-90:~# mkdir /null
root@ip-172-31-17-90:~# mkdir -p /n/1
root@ip-172-31-17-90:~# ls /n
1

root@ip-172-31-17-90:~# rsync -r --delete /null/ /n/
root@ip-172-31-17-90:~# ls /n

6.1.3查看属性信息功能,相当于ls

查看属性

root@ip-172-31-17-90:~# rsync /etc/hosts
-rw-r--r--            221 2019/05/14 18:02:05 hosts

6.2 远程数据传输模式(remote shell mode)

借助类似ssh隧道传输数据,适合不同的机器之间的复制 类似于scp

6.2.1 远程shell传输模式语法

远程shell数据传输模式分为拉取和推送两种模式,拉取是指从远端服务器把数据拉取到服务器本地,推送是指把数据从本地推送到远端服务器,这两种传输方式的语法格式,具体说明如下:

拉取(pull)表示从远端主机把数据复制到执行命令的本地主机的相应目录

rsync [OPTION...] [USER@]HOST:SRC... [DEST]

远程shell传输数据拉取语法格式说明

rsync [OPTION] [USER@]HOST:SRC [DEST]
rsync命令 参数选项 [认证用户]@[主机地址]:[源路径] 目的路径

**推送(Push)**表示从本地主机执行命令把本地的数据复制到远端主机指定目录

rsync [OPTION...] SRC... [USER@]HOST:DEST

远程shell传输数据推送语法说明

6.3 守护进程模式 以守护进程socket的方式传输数据最常用

PULL:拉取

rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

Push:推送

rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

注意:推拉操作都是通过rsync client客户端操作的。

7.rsync的应用场景

7.1 推

ubuntu部署rsync+crond实现定时备份

7.2 拉

ubuntu部署rsync+crond实现定时备份

7.3 大量数据备份场景

ubuntu部署rsync+crond实现定时备份

7.4 异地备份

ubuntu部署rsync+crond实现定时备份

1.规划

角色 IP 系统
客户端 192.168.197.26 ubuntu-16.04
服务端 192.168.197.29 ubuntu-16.04

2.安装rsync

ubuntu默认安装rsync 只需打开即可

192.168.197.29

vim /etc/default/rsync
RSYNC_ENABLE=true

参数详解

参数 说明
-v, --verbose 详细模式输出
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-z, --compress 对备份的文件在传输时进行压缩处理
-P 显示进度
-r, --recursive 对子目录以递归模式处理
-l, --links 保留软链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-e, --rsh=command 指定使用rsh、ssh方式进行数据同步
–exclude=PATTERN 指定排除不需要传输的文件模式
–exclude-from=FILE 排除FILE中指定模式的文件
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
–bwlimit=KBPS 限制I/O带宽,KBytes per second
–delete 删除那些DST中SRC没有的文件
–password-file=FILE 从FILE中得到密码
-n, --dry-run 现实哪些文件将被传输
-w, --whole-file 拷贝文件,不进行增量检测
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节。
-x, --one-file-system 不要跨越文件系统边界
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验

补充参数

--delete            实现无差异数据同步
--bwlimit=KBPS      实现数据传输过程中限速
--exclude=PATTERN   指定一个文件或目录 --exclude={file1,file2} 可以排除多个无顺序规则文件或目录
--exclude-from=FILE  指定排除多个文件或目录信息,将排除信息写入到一个文件中,利用--exclude-from=排除文件名   类似于tar 打包排除命令

3.修改配置文件

192.168.197.29

cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/
cat >/etc/rsyncd.conf<<"EOF"
##全局配置
uid = root #用户
gid = root #用户组 
use chroot = no   #安全相关	
max connections = 200  #最大链接数	
timeout = 300   #超时时间
pid file = /var/run/rsyncd.pid   #进程对应的进程号文件
lock file = /var/run/rsync.lock  #锁文件
log file = /var/log/rsyncd.log   #日志文件 显示错误信息

## 模块配置
[backup]     #模块名称
path = /data  #模块对应的为位置(路径)
ignore errors  #忽略错误程序
read only = false   #是否只读
list = false      #是否可以列表
hosts allow = 192.168.197.0/24  #允许客户端的网端
#hosts deny = 0.0.0.0/32      #禁止访问rsync服务器的客户范围
auth users = rsync_backup     #不存在的用户;只用户认证
secrets file = /etc/rsync.password  #设置进行连接认证的密匙文件
EOF

注意:配置文件中,行后不要有注释和空格。

4.创建rsync备份目录

192.168.197.29

mkdir -p /data

5.授权rsync用户管理备份目录

192.168.197.29

useradd rsync -s /sbin/nologin -M

6.修改备份目录权限

192.168.197.29

chown -R rsync.rsync /data/

7.创建认证用户密码文件

192.168.197.29

echo "rsync_backup:123456" >/etc/rsync.password

8.修改文件权限

192.168.197.29

chmod 600 /etc/rsync.password

9.重启rsync守护进程服务

192.168.197.29

/etc/init.d/rsync start

10. 客户端部署

192.168.197.26

cat >/etc/rsync.password<<"EOF"
123456
EOF
chmod 600 /etc/rsync.password

11. 客户端推送文件

注意:rsync默认使用873端口,防火墙开启时,需放行端口。

192.168.197.26

rsync -avz 88.txt rsync_backup@192.168.197.29::backup --password-file=/etc/rsync.password

12.客户端拉取文件

192.168.197.26

rsync -avz rsync_backup@192.168.197.29::backup --password-file=/etc/rsync.password /tmp
上一篇:错误:you (root) are not allowed to access to (crontab) because of pam configuration.


下一篇:第五课 用户身份和文件权限