linux中rsync备份文件

备份文件的方式

备份方式:

cp : 本机复制

scp: 远程复制

推(本地上传到远程服务器):
scp 1.txt root@ip:[路径]
[root@m01 ~]# scp 1.txt root@172.16.1.41:/opt/
-r是递归
拉(把远程服务器文件下载到本地):
scp root@ip:[路径] ./
[root@m01 ~]# scp root@172.16.1.41:/opt/2.txt ./
-r是递归

缺点: 只支持全量复制(就是如果某一文件修改了,需要全部复制过来才能更新信息,太浪费时间)

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特性

  1. 支持拷贝特殊文件,如连接文件、设备等。
  2. 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
  3. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。
  4. 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
  5. 可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
  6. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****。
  7. 支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。

rsync传输方式

类似与scp,rsync也是 " 推 " 和 " 拉 " 两种传输方式.

push 推:客户端将数据从本地推送至服务端

pull 拉:客户端将数据从服务端拉取到本地

rsync传输模式

  • 本地方式(类似于cp,不支持推送和拉取,只是单纯的复制)
  • 远程方式(类似于scp,又不同于scp),scp只支持全量备份,rsync支持增量备份和差异备份
  • 守护进程方式(客户端和服务端)

rsync使用

格式: rsync 参数 源文件路径 root@ip:目标文件路径

参数 作用
-a 归档模式传输, 等于-tropgDl -t -r -o -p -g -D -l
-v 详细模式输出, 打印速率, 文件数量等
-z 传输时进行压缩以提高效率
-r 递归传输目录及子目录,即目录下得所有目录都同样传输
-t 保持文件时间信息
-o 保持文件属主信息
-g 保持文件属组信息
-p 保持文件权限
-l 保留软连接
-P 显示同步的过程及传输时的进度等信息
-D 保持设备文件信息
-L 保留软连接指向的目标文件
-e 使用的信道协议,指定替代rsh的shell程序
--append 指定文件接着上次传输中断处继续传输
--append-verify 使用参数续传(在断点续传之后,验证一下文件,如果不同,修复文件)
--exclude=文件名 指定排除不需要传输的文件
--exclude-from=文件名 排除文件内写的文件名(文件内可以写多个文件名)
--bwlimit=传输速度 限速传输(单位:MB)
--delete 让目标目录和源目录数据保持一致
--password-file=文件名 使用密码文件(文件内要写密码)
--port 指定端口传输

eg:

-t           #保持文件时间信息
[root@m01 ~]# rsync -vzrt ./a/b/c/2.txt root@172.16.1.41:/opt/
-o #保持文件属主信息
-g #保持文件属组信息
[root@m01 ~]# rsync -vzrtgo ./a/b/c/2.txt root@172.16.1.41:/opt/
-p #保持文件权限
[root@m01 ~]# rsync -vzrtgop ./a/b/c/2.txt root@172.16.1.41:/opt/
-l #保留软连接
[root@m01 ~]# rsync -vzrtgopl ./* root@172.16.1.41:/opt/
-P #显示同步的过程及传输时的进度等信息
[root@m01 ~]# rsync -vzrtgoplP ./* root@172.16.1.41:/opt/
-D #保持设备文件信息
[root@m01 dev]# rsync -vzrtgDopl /dev/tty1 root@172.16.1.41:/opt/
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代rsh的shell程序
--bwlimit=100 # 限速传输(单位:MB)
[root@m01 ~]# rsync -avzP --append-verify --bwlimit=10 ./* root@172.16.1.41:/opt/
-v           #详细模式输出, 打印速率, 文件数量等
[root@m01 ~]# rsync -v ./2.txt root@172.16.1.41:/opt/

-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
[root@m01 ~]# rsync -vzr ./a root@172.16.1.41:/opt/

rsync增量复制的体现

-a           #归档模式传输, 等于-tropgDl    -t -r -o -p -g -D -l

-z           #传输时进行压缩以提高效率
[root@m01 ~]# rsync -vz ./2.txt root@172.16.1.41:/opt/

--append            # 指定文件接着上次传输中断处继续传输
[root@m01 ~]# rsync -avzP --append ./* root@172.16.1.41:/opt/

--append-verify     # 使用参数续传(在断点续传之后,验证一下文件,如果不同,修复文件)
[root@m01 ~]# rsync -avzP --append-verify ./* root@172.16.1.41:/opt/

--exclude=PATTERN   # 指定排除不需要传输的文件
[root@m01 ~]# rsync -avzP --append-verify --exclude=2.txt ./* root@172.16.1.41:/opt/

--exclude-from=file # 按照文件指定内容排除
[root@m01 ~]# rsync -avzP --append-verify --exclude-from=/tmp/exclude.txt ./* root@172.16.1.41:/opt/

--delete 数据一致 (无差异同步)
在服务器的/tmp/linux路径下

[root@backup linux]# ll
total 563220
-rw-r--r-- 1 rsync rsync 576716800 Dec 29 15:48 2.txt
-rw-r--r-- 1 rsync rsync 0 Dec 29 21:55 4.txt
drwxr-xr-x 3 rsync rsync 15 Dec 29 15:22 a
-rw------- 1 rsync rsync 1687 Dec 24 16:34 anaconda-ks.cfg
-rwxr-xr-x 1 rsync rsync 133 Dec 24 18:42 checkIP.sh
-rwxr-xr-x 1 rsync rsync 4543 Dec 24 16:35 init.sh
-rw-r--r-- 1 rsync rsync 12 Dec 29 16:11 name.txt

在客户端

[root@web01 test]# ll
total 563220
-rw-r--r-- 1 root root 576716800 Dec 29 15:48 2.txt
-rw-r--r-- 1 root root 0 Dec 29 21:55 4.txt
drwxr-xr-x 3 root root 15 Dec 29 15:22 a
-rw------- 1 root root 1687 Dec 24 16:34 anaconda-ks.cfg
-rwxr-xr-x 1 root root 133 Dec 24 18:42 checkIP.sh
-rwxr-xr-x 1 root root 4543 Dec 24 16:35 init.sh
-rw-r--r-- 1 root root 12 Dec 29 16:11 name.txt
# 然后删除一些文件
[root@web01 test]# rm -rf a name.txt init.sh checkIP.sh
[root@web01 test]# ll
total 563204
-rw-r--r-- 1 root root 576716800 Dec 29 15:48 2.txt
-rw-r--r-- 1 root root 0 Dec 29 21:55 4.txt
-rw------- 1 root root 1687 Dec 24 16:34 anaconda-ks.cfg
# --delete同步文件
[root@web01 test]# rsync -az --delete ./ rsync_backup@172.16.1.41::linux
# 这里需要注意的是不能写./*而是./ 因为是把整个目录去做对比,而不是目录下的每个文件.

在服务端

[root@backup linux]# ll
total 563204
-rw-r--r-- 1 rsync rsync 576716800 Dec 29 15:48 2.txt
-rw-r--r-- 1 rsync rsync 0 Dec 29 21:55 4.txt
-rw------- 1 rsync rsync 1687 Dec 24 16:34 anaconda-ks.cfg
# 证明在客户端的同步下服务端的文件被同步删除了

PS:注意: rsync不管是推还是拉,推送目录的时候带/和不带/是有区别的

1.带/ :/etc/ 将etc目录里的所有内容(不包括etc文件夹),推过去或者拉过来

2.不带/:/etc 将etc目录整体(包括etc文件夹及文件夹里的所有内容)推过去或者拉过来

rsync守护进程模式

服务端

按照以下步骤进行设置

1、安装
[root@backup ~]# yum install -y rsync 2、修改配置文件
[root@m01 ~]# vim /etc/rsyncd.conf
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync #用户名
gid = rsync #用户组
port = 873 #端口
fake super = yes #无需让rsync以root身份运行
use chroot = no #禁锢目录,不允许操作指定目录之外的目录
max connections = 200 #最大连接数200
timeout = 600 #超时时间600s 10分钟
ignore errors #忽略错误信息
read only = false #关闭只读,对备份数据可读写
list = false #不允许查看模块信息
auth users = rsync_backup #认证用户,定义虚拟用户作为连接认证用户
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 #路径,定义接收备份数据目录 3、创建系统用户
[root@backup opt]# groupadd rsync -g 666 # 属组随便写
[root@backup opt]# useradd rsync -u 666 -g 666 -M -s /sbin/nologin -r # 属主随便写 4、创建密码文件
[root@backup opt]# echo "rsync_backup:123456" > /etc/rsync.passwd # 密码自己设置 5、授权(必须授权为600)
[root@backup opt]# chmod 600 /etc/rsync.passwd 6、创建备份目录
[root@backup opt]# mkdir /backup
[root@backup opt]# mkdir /tmp/linux 7、目录授权
[root@backup opt]# chown rsync.rsync /backup/
[root@backup opt]# chown rsync.rsync /tmp/linux/ 8、关闭防火墙和selinux
[root@backup opt]# systemctl disable --now firewalld
[root@backup opt]# setenforce 0 9、启动rsyncd服务
[root@backup opt]# systemctl start rsyncd

客户端

按照以下步骤进行设置

方法一:自己输入密码
[root@m01 ~]# rsync -avzP ./* rsync_backup@172.16.1.41::backup rsync_backup : 虚拟用户,只在数据传输时使用
172.16.1.41 : backup服务端的IP
backup : 模块名称 方法二:设置密码文件,运行时读取 1、编写密码文件
[root@backup opt]# echo "123456" > /etc/rsync.passwd 2、授权
[root@m01 ~]# chmod 600 /etc/rsync.passwd 3、连接
[root@m01 ~]# rsync -avzP --password-file=/etc/rsync.passwd ./* rsync_backup@172.16.1.41::linux 方法三:添加环境变量
1、定义环境变量
export RSYNC_PASSWORD=123456 2、同步
[root@m01 ~]# rsync -avzP ./* rsync_backup@172.16.1.41::linux

Rsync的推操作:

[root@web01 data]# rsync -avz /data/ rsync_backup@172.16.1.41::backup
#将目录data推至服务器端backup中 在守护进程中,不考虑加/或者不加/

Rsync的拉操作:

[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::backup ./
#将服务器端的模板目录拉至客户端的当前目录中 在守护进程中,不考虑加/或者不加/
# 最后的backup可写成backup/1.txt 只复制backup下的1.txt

rsync实时同步

rsync是不支持实时同步的,通常我们借助于inotify这个软件来实时监控文件变化,一旦inotify监控到文件变化,则立即调用rsync进行同步。

参数 作用
-m 持续监控
-r 递归
-q 静默,仅打印时间信息
--timefmt 指定输出时间格式
--format 指定事件输出格式(%Xe 事件,%w 目录,%f 文件)
-e 指定监控的事件(access 访问,modify 内容修改,attrib 属性修改,close_write 修改真实文件内容,open 打开,create 创建,delete 删除)

格式:

[root@m01 ~]# /usr/bin/inotifywait  -mrq  --format '%Xe  %w  %f' -e create,modify,delete,attrib,close_write  /root  # 持续监控本机/root目录下  监控创建、监控修改、监控删除、监控属性修改、监控修改文件内容

实时监控并同步

[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/rsync.passwd ./* rsync_backup@172.16.1.41::linux
done
# 因为监控的是root目录 所以要切换到/root目录下

linux中rsync备份文件的更多相关文章

  1. Rsync(远程同步): linux中Rsync命令的实际示例

    rsync的 ( 远程同步 )为在Linux / Unix系统局部 拷贝和同步文件和目录远程以及一个最常用的命令. 随着rsync命令的帮助,您可以复制并在目录中远程和本地同步数据,在磁盘和网络,进行 ...

  2. Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置

    博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...

  3. Linux中rsync备份服务部署

    rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份工具 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输 ...

  4. Linux中架构中的备份服务器搭建(rsync)

    本期内容概要 Linux中的备份方式 架构中备份服务器搭建(rsync) 内容详细 1.备份方式 1. cp : 本机复制(只能作用在本机) 2. scp : 远程复制 两种模式: 推 : 本地上传到 ...

  5. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  6. Linux下Rsync+Inotify-tools实现数据实时同步

    Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...

  7. Linux服务-rsync

    目录 1. rsync简介 2. rsync特性 3. rsync的ssh认证协议 4. rsync命令 5. rsync+inotify Linux服务-rsync 1. rsync简介 rsync ...

  8. Linux中如何将系统调优

    Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.Linux服务器有各 ...

  9. Linux中的两种守护进程stand alone和xinetd

    Linux中的两种守护进程stand alone和xinetd --http://www.cnblogs.com/itech/archive/2010/12/27/1914846.html#top 一 ...

随机推荐

  1. vue2版本中slot的基本使用详解

    前言 在vue的开发过程中,我们会经常使用到vue的slot插槽组件,vue官方文档的描述: Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案 ...

  2. nf-Press —— 在线文档也可以加载组件和编写代码

    如果帮助文档可以加载组件,那么在介绍的同时就可以运行演示demo,是不是很酷? 如果可以在线修改运行代码,那么是不是更容易理解? 上一篇 https://www.cnblogs.com/jyk/p/1 ...

  3. Windows10 1809版本Windows自动更新服务无法禁用问题解决方案

    症状 Windows Update服务已经在服务管理器中禁用,但是莫名奇妙的会被自动设置为手动,并会自动下载补丁.原因 微软加强了系统更新服务的保护措施,导致按照原有的禁用服务方法,能够随时被恢复.解 ...

  4. 后门及持久化访问4----Com组件劫持

    代码及原理介绍 COM是Component Object Model(组件对象模型)的缩写,COM组件由DLL和EXE形式发布的可执行代码所组成.每个COM组件都有一个CLSID,这个CLSID是注册 ...

  5. PowerSploit的使用

    Invoke-Mimikatz(依赖管理员) Import-Module .\invoke-mimikatz.ps1 Invoke-Mimikatz –DumpCreds 使用Invoke-Mimik ...

  6. python写一个数字字典生成器

    #数字字典生成器 by qianxiao996 #博客地址:https://blog.csdn.net/qq_36374896 #此程序输入开始结束和位数即可在程序所在目录下生成字典 #只支持数字生成 ...

  7. OO第一单元

    OO第一单元总结 目录 OO第一单元总结 前言 第一次作业 HW1基本思路 UML类图 代码规模 复杂度分析 方法复杂度 分析 类复杂度 分析 优化策略 第二次作业 HW2基本思路 UML类图 代码规 ...

  8. display 不同的值及他们的作用

    display 不同的值及他们的作用 常见 block 块元素类型,默认宽度为父元素宽度,可设置宽高,并独占一行 none 元素不显示,并从文档流中移除 inline 行内元素类型,默认宽度为内容宽度 ...

  9. Windows&Linux文件传输方式总结

    在渗透过程中,通常会需要向目标主机传送一些文件,来达到权限提升.权限维持等目的,本篇文章主要介绍一些windows和Linux下常用的文件传输方式. Windows 利用FTP协议上传 在本地或者VP ...

  10. 【算法】两个list合并

    转载博客地址 http://blog.sina.com.cn/s/blog_5da93c8f0101fdrp.html 有两个ArrayList,分别为list1和list2,分析这两个list后生成 ...