rsync备份
Posted 椰子皮0oo0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync备份相关的知识,希望对你有一定的参考价值。
Linux中的备份方式
① cp (本机备份)
② scp(远程备份)
③ rsync (远程备份)
scp与rsync的区别
相同点:srp与rsync都支持将文件上传到远程服务器和在远程服务器下载文件
不同点:srp只支持全量复制(每次备份文件都得将整个文件内容重新上传或下载,不支持拷贝特殊文件,如链接文件、设备等
rsync支持全量复制和增量复制(每次备份文件时校验文件,只下载新增的文件内容,支持拷贝特殊文件,如链接文件、设备等
rsync简介
rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
rsync官方地址:https://rsync.samba.org/
rsync监听端口:873
rsync运行模式:C/S client/server
rsync简称叫做远程同步,可以实现不同主机之间的数据同步,还支持全量和增量
rsync使用
语法格式
rsync [参数] [需要备份的文件] [上传的服务器ip]:[存放的目录]
参数
-v (显示上传的速率和文件数量等)
-z(传输时进行压缩提高传输速度)
-r(递归传输目录以及目录下的子目录和文件)
-t (保持文件时间信息)
-o(保持文件属主信息)
-g(保持文件属组信息)
-p(保持文件权限信息)
-l (保持文件软连接)
-D(保持文件设备信息)
-a (归档模式传输,等于-trogplD这七个参数的集合)
-P(显示同步过程中的进度)
-L(保留软连接指向的文件)
-e(使用的信道协议,指定替代rsh的shell程序)
--append(指定文件在上一次传输中断掉的地方继续上传)
--append-verify(和append参数一样,会多一步验证同步的文件和原文件是否一样,如果和原来文件不同则会修复)
-exclude(同步时排除某个文件)
-exclude-from=file(按照文件指定的内容排除同步)
在/tmp/exclude.txt文件里面写入1.txt与2.txt,执行该参数命令
--bwlimit=100(限制同步的速率 100MB/s)
--delete(让目标目录与源目录数据保持一致)
--passwd-file=密码文件名(使用密码文件)
--port(指定端口传输)
rsync守护进程模式
在服务端操作
① 关闭防火墙与selinux服务
[root@backup opt]# systemctl disabel --now firewalld
[root@backup opt]# setenforce 0
② 检查是否安装了rsync,如果没有则下载
[root@backup opt]# rpm -q rsync
[root@backup opt]# yum install rsync
③ 修改配置文件 /ect/rsyncd.conf
将配置文件修改成以下内容
[root@m01 ~]# vim /etc/rsyncd.conf
uid = rsync # 用户
gid = rsync # 用户组
port = 873 # 服务器默认监听端口
fake super = yes # 无需使用root用户启动
use chroot = no # 安全机制
max connections = 200 # 最大连接数
timeout = 600 # 超时时间
ignore errors # 忽略错误
read only = false # 只读权限
list = false # 查看模块列表
auth users = rsync_backup # 定义虚拟用户(rsync传输过程中使用的用户)
secrets file = /etc/rsync.passwd # 定义虚拟用户的密码
log file = /var/log/rsyncd.log # 日志文件
#####################################
[backup] # 模块
comment = welcome to backup! # 模块的备注
path = /backup # 服务器真实的路径
[linux]
comment = welcome to linux!
path=/tmp/linux
④ 创建系统用户
[root@backup opt]# groupadd rsync -g 333
[root@backup opt]# useradd rsync -u 333 -g 333 -M -s /sbin/nologin -r
⑤ 创建密码文件
[root@backup opt]# echo "rsync_backup:1" > /etc/rsync.passwd
⑥ 给予密码文件权限
[root@backup opt]# chmod 600 /etc/rsync.passwd
⑦ 创建备份的目录
[root@backup opt]# mkdir /backup
[root@backup opt]# mkdir /tmp/linux
⑧ 给与目录rsync的权限
[root@backup opt]# chown rsync.rsync /backup/
[root@backup opt]# chown rsync.rsync /tmp/linux/
⑨ 启动rsyncd服务
[root@backup opt]# systemctl start rsyncd
在客户端操作
① 连接服务端
方式1 : 自己输入密码登录
[root@m01 ~]# rsync -avzP ./* rsync_backup@172.16.1.41::backup
方式2:创建密码文件(无需输入密码,该密码必须和服务端设置的密码一致)
[root@m01 ~]# echo "1" > /etc/rsync.passwd
给密码文件授权
[root@m01 ~]# chmod 600 /etc//rsync.passwd
连接服务端
[root@m01 ~]# rsync -avzP --password-file=/etc/rsync.passwd ./* rsync_backup@172.16.1.41::backup
方式3:将密码添加到环境变量中
定义环境变量
[root@m01 ~]# export RSYNC_PASSWORD=\'1\'
连接服务器
[root@m01 ~]# rsync -azvP ./* rsync_backup@172.16.1.41::linux
rsync实时同步
rsync自己是没有实时监控文件的功能的,它只有同步的功能,如果我们想要实现实时同步的功能,必须要用到实时监控文件变化的软件inotify
rsync监控命令:/usr/bin/inotifywait [参数] -e [监控的事件] [监控的文件目录]
参数:
-m(持续监控)
-r (递归)
-q (静默输出,仅显示时间信息)
--timefmt(指定输出的时间格式)
--format(指定时间输出格式)
%Xe(事件)
%w (目录)
%f (文件)
-e (指定监控的事件)
access(访问)
modify(内容修改)
attrib(属性修改)
close_write (修改真实文件内容)
open (打开)
create(创建)
delete(删除)
umount (卸载)
① 安装inotify(安装在客户端,因为要监控客户端软件变化并同步到服务端)
[root@m01 ~]# yum install inotify-tools -y
②实时监控并同步
[root@m01 ~]# /usr/bin/inotifywait -mrq --format \'%Xe %w %f\' -e create,modify,delete,attrib,close_write /root | while read line;do
cd /root
rsync -avzP --delete --password-file=/etc/rsyncd.passwd ./* rsync_backup@172.16.1.41::backup
done
以上是关于rsync备份的主要内容,如果未能解决你的问题,请参考以下文章