暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Rsync数据复制备份软件应用

蜜蜂点滴 2020-03-17
495


一、Rsync简介

1、什么是rsync

rsync,remote synchronization,

开源,高速的,可实现本地及远程,全量以及增量的数据复制工具。

官方链接:http://www.samba.org/ftp/rsync/rsync.html

官方手册:man rsync/man rsync.conf

2、rsync的作用

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

3、rsync功能特性

Rsync的特性如下(7个特性信息说明):

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

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

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

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

·可以使用rcp、rsh、SSH等方式来配合进行隧道加密传输文件(Rsync本身不对数据加密)。

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

4、增量复制原理

quick check 算法,它仅复制大小或

只对增量的部分复制,根据大小属性的变化进行复制。

2.x对比差异后复制,3.x一边比对一边复制

5、rsync三种工作模式介绍

1)本地(local)

语法:rsync 参数 源目录或文件 目的目录或文件

rsync就是一个命令

a、把数据从一个地方拷贝到另外一个地方,相当于cp。

b、通过加参数可用实现删除功能,相当于rm。

c、查看属性信息功能,相当于ls。

实践:

#rsync /etc/hosts /opt/                         #<==本地复制

-rw-r--r-- 1 root root 367 Mar 15 15:05 hosts

属性最后少一个点,因为#getenforce,是Disabled

#rsync -zrtopg /etc/hosts /opt/           #<==保持属性

#rsync -r --delete null.txt /opt/hosts   #<==删除文件内容

#rsync -r --delete /null /opt/ opt         #<==目录下的文件都删除

#rsync /etc/hosts                                  #<== 查看属性

2)远程shell模式

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

异地拷贝,相当于scp。

pull 拉:从远程拉取到本地。

rsync 参数 [认证用户]@[主机地址]:[源路径] 本地路径

#rsync -avz root@172.16.1.31:/etc/hosts /opt/

push推:从本地退到远程

rsync 参数选项 本地地址 [认证用户]@[主机地址]:[目标路径]

#rsync -avz /etc/hosts root@172.16.1.41:/opt/  #<==推到远程1.41服务器,加密传输。

#rsync -avz /etc/hosts -e 'ssh -p 22' root@172.16.1.41:/opt/  #<==-p指定端口参数,-e指定隧道。

推拉:

a、参照物,执行命令的机器

强调一个重点:只适合rsync

null和null/区别:null是目录和目录下的内容,

null/只是目录下的内容,不含本身

3)rsync守护进程模式

首先要搭建rsync服务端(要有守护进程),然后才能在客户端实现推拉数据。重要模式。

客户端语法:见下文。

rsync服务模式:*****开启后台进程,接受别人访问。

6、rsync命令参数

-v 进度

-z 压缩

-a rtopgDl

-r 递归

-t 保持修改时间属性

-o 保持属主不变

-p 保持权限不变

-g 保持用户组不变

-l 保持拷贝软链接

常用:

-avz

-vzrtopg

二、应用实践

rsync守护进程模式应用实践

查看版本:#rsync --version

如果没有请安装:#yum install rsync

1、服务端配置:

1)配置文件ls /etc/rsyncd.conf

cp /etc/rsyncd.conf{,.ori}

cat >/etc/rsyncd.conf<<EOF

#rsync_config

uid = rsync  #<==管理备份目录的用户

gid = rsync  #<==管理备份目录的用户组

fake super = yes             #<==CentOS7比CentOS6增加的参数。不用root用户也可以存储文件的完整属性。

use chroot = no              #<==安全功能,数据是否锁定到备份目录

max connections = 200  #<==并发连接,同时多少客户端访问

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    #<==存放密码的文件:格式:用户名:密码,权限要求必须是600。

[backup]                                           #<==模块标识

comment = welcome to oldboyedu backup!

path = /backup/                               #<==服务端用于备份的目录,用户和组,rsync.rsync。

EOF

2)

#systemctl start rsyncd 启动服务

3)创建用户,分配权限

#useradd rsync

#id rsync 

#chown -R rsync.rsync /backup/

4)查看状态

#systemctl start rsyncd

#systemctl status rsyncd 查看状态

#systemctl enable rsyncd

检查进程:#ps -ef|grep sync|grep -v grep

检查端口:#netstat -lntup|grep 873

#lsof -i :873

如何查看某端口对应什么服务?

5)配置密码文件/etc/rsync.passwd

#echo "rsync_backup:user" >/etc/rsync.password

#chmod 600 /etc/rsync.password   权限一定为600

6)服务端配置完成。

2、客户端配置:

方法1:认证文件

这个密码文件必须和rsyncd.conf一致

#echo "user" >/etc/rsync.password 和服务端稍微不同。

方法2:如果客户端配置环境变量,则备份时忽略参数--password-file

#echo 'export RSYNC_PASSWORD=user' >>/etc/bashrc

#echo $RSYNC_PASSWORD

#.  /etc/bashrc  生效

rsync客户端配置完成。

3、复制备份操作

守护进程模式,客户端rsync语法

配置服务器端守护进程,实现数据传输

服务端守护进程。客户端执行。

pull 拉:从远程拉取到本地。

语法1:rsync 参数 [虚拟用户]@[主机地址]::[模块名] 本地路径

语法2:rsync 参数 rsync://[虚拟用户]@[主机地址]/[模块名] 本地路径

push推:从本地退到远程

语法1:rsync 参数 本地路径 [虚拟用户]@[主机地址]::[模块名]

语法2:rsync 参数 本地路径 rsync://[虚拟用户]@[主机地址]/[模块名] 

在客户端测试:

#rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

文章转载自蜜蜂点滴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论