您当前的位置:首页 > 电脑百科 > 数据库 > 百科

Linux中使用rsync数据备份工具和实例

时间:2022-05-24 09:39:07  来源:  作者:星锅说事

对于运维不得不得做的就是备份,增量备份与全量备份,通过rsync工具可以快速做到远程备份。

rsync的应用: 1.备份文件 2.全量备份 3.增量备份。 通过rsync+inotify实时同步文件。

一、什么是rsync

rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

rsync是一款快速增量备份工具,支持:

(1)本地复制;
(2)与其他SSH同步;
(3)与rsync主机同步。

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责相应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文档的原始位置,发起端应对该位置有读取权限。

Linux中使用rsync数据备份工具和实例

 

rsync的优点

1.它有效地将文件复制和同步到远程系统或从远程系统同步文件到本地。

2.支持复制链接、设备、所有者、组和权限。

3.它比scp (Secure Copy)更快,因为rsync使用远程更新协议,该协议只允许传输两组文件之间的差异。第一次,它将一个文件或目录的全部内容从源文件复制到目标文件,但从下一次开始,它只将更改的块和字节复制到目标文件。

4.Rsync在两端发送和接收数据时采用压缩和解压缩方式,因此占用的带宽较少。

二、安装rsync

查看版本或者查看本机是否安装

rsync --version

centos中使用下面命令安装rsync:

 yum -y install rsync

在Ubuntu 或者Debian体系的linux系统上安装rsync

sudo apt install rsync

三、使用rsync备份工具

配置好rsync同步源服务器之后,客户端就可以使用rsync工具来执行远程同步了。

基本语法

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
  • OPTION – rsync参数选项.
  • SRC – 源目录.
  • DEST – 目标目录.
  • USER – 远程用户名.
  • HOST – 远程主机名或域名或IP地址.

rsync命令的选项

选项

说明

-a, ––archive

归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (注意不包括 -H)

-r, ––recursive

对子目录以递归模式处理

-l, ––links

保持符号链接文件

-H, ––hard-links

保持硬链接文件

-p, ––perms

保持文件权限

-t, ––times

保持文件时间信息

-g, ––group

保持文件属组信息

-o, ––owner

保持文件属主信息 (super-user only)

-D

保持设备文件和特殊文件 (super-user only)

-z, ––compress

在传输文件时进行压缩处理

––exclude=PATTERN

指定排除一个不需要传输的文件匹配模式

––exclude-from=FILE

从 FILE 中读取排除规则

––include=PATTERN

指定需要传输的文件匹配模式

––include-from=FILE

从 FILE 中读取包含规则

––copy-unsafe-links

拷贝指向SRC路径目录树以外的链接文件

––safe-links

忽略指向SRC路径目录树以外的链接文件(默认)

––existing

仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件

––ignore-existing

忽略那些已经存在于接收端的文件,仅备份那些新创建的文件

-b, ––backup

当有变化时,对目标目录中的旧版文件进行备份

––backup-dir=DIR

与 -b 结合使用,将备份的文件存到 DIR 目录中

––link-dest=DIR

当文件未改变时基于 DIR 创建硬链接文件

––delete

删除那些接收端还有而发送端已经不存在的文件

––delete-before

接收者在传输之前进行删除操作 (默认)

––delete-during

接收者在传输过程中进行删除操作

––delete-after

接收者在传输之后进行删除操作

––delete-excluded

在接收方同时删除被排除的文件

-e, ––rsh=COMMAND

指定替代 rsh 的 shell 程序

––ignore-errors

即使出现 I/O 错误也进行删除

––partial

保留那些因故没有完全传输的文件,以是加快随后地再次传输

––progress

在传输时显示传输过程

-P

等价于 ––partial ––progress

––delay-updates

将正在更新的文件先保存到一个临时目录(默认为 “.~tmp~”),待传输完毕再更新目标文件

-v, ––verbose

详细输出模式

-q, ––quiet

精简输出模式

-h, ––human-readable

输出文件大小使用易读的单位(如,K,M等)

-n, ––dry-run

显示哪些文件将被传输

––list-only

仅仅列出文件而不进行复制

––rsyncpath=PROGRAM

指定远程服务器上的 rsync 命令所在路径

––password-file=FILE

从 FILE 中读取口令,以避免在终端上输入口令,通常在 cron 中连接 rsync 服务器时使用

-4, ––ipv4

使用 IPv4

-6, ––ipv6

使用 IPv6

––version

打印版本信息

––help

显示帮助信息

在指定复制源时,路径是否有最后的 “/” 有不同的含义,例如:

/home : 表示将整个 /home 目录复制到目标目录
/home/ : 表示将 /home 目录中的所有内容复制到目标目录

四、rsync使用实例

本地复制

# rsync /etc/passwd 123.txt
//类似于cp命令

远程同步

可以配合ssh免密码登录,则不需要输入密码。

或者使用 --password-file=/etc/pass.txt 指定接收端的密码,明文可能不安全

# rsync -av root@192.168.1.2:/root/123.txt .
root@192.168.1.2's password:

rsync指定端口号( -e )

/usr/bin/rsync -e 'ssh -p 60920' -ahqzt  /root/master3.sql root@192.168.1.2:/root/ 

在传输过程中查看rsync进度(--progress)

使用--progress选项显示rsync执行的详细进度,如下所示:

# rsync -avz --progress /root/temp/ root@192.168.1.2:/root/temp

单向备份(--delete)

如果文件不在源中而是在目标中存在,则可能希望在rsync同步期间删除目标上的文件。在这种情况下,请使用--delete选项:

rsync -avz --delete /root/temp root@192.168.1.2:/root/temp

文件传输过程中的include和exclude模式

rsync允许在进行同步时提供要包括和排除文件或目录的模式。

[root@localhost ~]# rsync -avz --include 'P*' --exclude '*' root@192.168.1.2:/var/lib/rpm/ /root/temp/

排除的文件和目录(--exclude-from)

使用--exclude-from参数,并指定要在文件中排除的文件和目录。

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

加入需要排除的文件,比如文件file1.c,目录zcwyou:
cat /exclude-file.txt
file1.c
zcwyou

不传输大文件(--max-size)

可以使用rsync --max-size选项告诉rsync不要传输大于指定大小的文件。

# rsync -avz --max-size='1M' root@192.168.1.2:/var/lib/rpm/ /root/temp/
--max-size=1M使rsync仅传输小于或等于1M的文件。单位可以是K,M,G等。
还可以使用--min-size=参数,指定传输最小文件的大小。

传输成功后删除源文件(--remove-source-files)

假设你有一个主web服务器和一个数据备份服务器,你创建了一个每日备份并与备份服务器同步,现在你不想在你的web服务器上保留备份的本地副本。

那么,您会等待传输完成,然后手动删除本地备份文件吗?这样做肯定有点麻烦,这种自动删除可以使用–remove-source-files选项来完成。

rsync --remove-source-files -zvh backup.tar.gz root@192.168.0.151:/home/backup/
检查:
ls -l backup.tar.gz

限制Rsync传输时的带宽(--bwlimit)

在将数据从一台机器传输到另一台机器时,可以使用–bwlimit选项设置带宽限制。这个选项可以帮助我们限制Rsync占用的网络带宽。

rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  root@192.168.0.151:/root/tmprpm/

另外,默认情况下rsync只同步更改的块和字节,如果你想完整同步整个文件或目录,那么你可以使用-W选项。

定时任务

但是在现实工作环境中,备份工作通常是按计划重复执行的,比如:

[root@localhost ~]# vim /root/123.pass
123456
//任意创建一个文件用于存放rsync授权用户的密码信息
[root@localhost ~]# chmod 600 /root/123.pass
//必须设定600权限,否则执行时将会报错
[root@localhost ~]# crontab -e
//创建计划任务
30 22 * * * /usr/bin/rsync -az --delete --password-file=/root/123.pass backuper@192.168.1.1::wwwroot /a
//每天晚上22:30执行脚本
[root@localhost ~]# systemctl restart crond
//重新启动crond服务

同步目录

这里是经常使用的脚本,做代码、文件同步。

#!/bin/bash

SRC=/data/path1/ #192.168.1.3 发送端目录
DST=/data/path1/ #192.168.1.2 接收端目录
IP="192.168.1.2"
USER=www

#同步文件
/usr/bin/rsync -e 'ssh -p 22' -ahqzt 
--exclude ".git" 
--exclude "www/Conf/config.php" 
--exclude "www/Public/ueditor/*" 
--exclude "README.md" 
--delete $SRC $USER@$IP:$DST

-ahqzt
-a:归档模式
-h:输出文件大小使用易读的单位(如,K,M等)
-q:精简输出模式
-z: 在传输文件时进行压缩
-t: 保留文件的时间标记
--exclude: 不需要同步的文件或目录
--delete: 删除那些接收端还有而发送端已经不存在的文件

在本教程中,您学习了如何使用Rsync在多台Linux之间传输、复制或同步文件和目录。在Rsync用户手册页面上有更多关于Rsync的内容。下次再讲如何通过rsync+inotify实时同步文件。



Tags:rsync   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
抛弃 scp 改用 rsync,让 Linux 下文件传输高效无比
我们都使用过 scp 来传输文件。当传输在中途或甚至在 99% 时被中断时,我们都会诅咒不已(每当我想起99%的中断传输时,我的心都很痛);让我们看看如何使用 rsync 来替代 scp,避免这样...【详细内容】
2023-08-02  Search: rsync  点击:(571)  评论:(0)  加入收藏
一篇文章学会数据备份利器rsync
阿铭linux近16年的IT从业经验,6年+鹅厂运维经验,6年+创业公司经验,熟悉大厂运维体系,有从零搭建运维体系的实战经验。关注我,学习主流运维技能,让你比别人提升更快,涨薪更多!作为...【详细内容】
2023-01-16  Search: rsync  点击:(307)  评论:(0)  加入收藏
Linux安装rsync和inotify实现文件夹实时同步
需求说明在web服务器中,作为代码发布机A,文件同步到服务器B,C,D等集群中,可以忽略某个文件和目录。A服务器:内网IP: 192.168.1.2B服务器:内网IP: 192.168.1.3A和B的www用户,或者roo...【详细内容】
2022-05-25  Search: rsync  点击:(425)  评论:(0)  加入收藏
Linux中使用rsync数据备份工具和实例
对于运维不得不得做的就是备份,增量备份与全量备份,通过rsync工具可以快速做到远程备份。rsync的应用: 1.备份文件 2.全量备份 3.增量备份。 通过rsync+inotify实时同步文件。...【详细内容】
2022-05-24  Search: rsync  点击:(375)  评论:(0)  加入收藏
Linux搭建rsync备用服务器,及配置文件详解
rsync官方网址:https://rsync.samba.org/一:rsync介绍rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具。在守护进程模式(daemon mode)下,rs...【详细内容】
2022-02-25  Search: rsync  点击:(444)  评论:(0)  加入收藏
lsyncd实时同步搭建指南——取代rsync+inotify
1. 几大实时同步工具比较1.1 inotify + rsync最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达...【详细内容】
2021-05-19  Search: rsync  点击:(440)  评论:(0)  加入收藏
linux之间传文件命令之Rsync傻瓜式教程
1. 前言linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。在本教程中,我们将通过实际使用案例和最常见的rsy...【详细内容】
2020-09-17  Search: rsync  点击:(482)  评论:(0)  加入收藏
scp 用户的 rsync 迁移指南
OpenSSH 项目表示,他们认为 scp 协议已经过时,不灵活,而且不容易修复,然后他们继而推荐使用 sftp 或 rsync 来进行文件传输。• 来源:linux.cn • 作者:Chasinglogic &bu...【详细内容】
2020-09-03  Search: rsync  点击:(290)  评论:(0)  加入收藏
文件增量同步之rsync算法
前言之前毕设有用到文件增量同步,于是乎就记录一下。场景在A和B两个不同端之间有相似度很高的文件,同时这个文件又比较大。如果通过全量传输来更新,http传输量很大,非常不友好。...【详细内容】
2020-08-28  Search: rsync  点击:(632)  评论:(0)  加入收藏
rsync实现 linux与windows备份同步
1、准备好系统环境与软件:这里使用的linux是centos 7.8,如下:查linux版本windows使用的是win10。Rsync 服务端linux使用的是3.1.2:rsync版本linux端可以使用yum install -y rsyn...【详细内容】
2020-08-04  Search: rsync  点击:(600)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(9)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(7)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(19)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(19)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(11)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(17)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(13)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(13)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(37)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(24)  评论:(0)  加入收藏
站内最新
站内热门
站内头条