如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情
作为一名成熟的运维人员要懂得狡兔三窟,面对一些重要的数据,需要定时的去备份,备份可以分为两种,全量备份和增量备份,顾名思义,全量备份是将目标文件全部备份,但是一天备份一次的话,今天备份了一次1.txt,第二天又备份了一次,一个星期要备份七次,一个月30次,那么我留着这30份名字都是1.txt,内容还都相同的文件,有什么意义呢?我想除了占用我的磁盘空间浪费资源毫无意义,既然如此就需要增量备份了,那么,如何实现增量备份呢?就需要今天我们所讲述的内容——rsync
目录
💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!
rsync概述
Rsync 是一个远程数据同步工具,它可以在本地[计算机]与远程计算机之间,或者两个本地目录之间同步文件。它通过比较文件的修改时间、大小等信息来确定哪些文件需要更新,然后仅传输有差异的部分,这样可以大大减少数据传输量,提高同步效率。Rsync 使用所谓的 “rsync 算法” 来实现这种高效的数据传输。这种算法能够在文件的不同版本之间计算出最小的数据块变化,从而实现增量备份和同步。
在麒麟操作系统中想要使用rsync服务器是需要安装的,使用yum -y install rsync
rsync有3种模式,本地模式,远程模式,守护进程模式
rsync服务默认端口:873
rsync常用选项
`-z`:在传输数据时进行压缩,可以减少网络传输的数据量,加快传输速度,尤其适用于网络带宽有限的情况。例如:`rsync -azv 本地文件 远程主机名@主机目录`。
`-P`:这是`--partial`和`--progress`的组合选项。`--partial`允许中断的传输在下次传输时继续,而不是重新开始;`--progress`会显示传输进度。
`--delete`:这个选项用于使目标目录和源目录完全保持一致。如果源目录中删除了某个文件,在同步时目标目录中的相应文件也会被删除。例如,`rsync -av --delete /source/ user@remote:/destination/`。
rsync应用场景
备份数据:可以将重要的数据备份到远程服务器或者其他存储设备上。例如,网站管理员可以使用 rsync 将网站的文件和数据库备份到另一台服务器,以防止数据丢失。
镜像文件系统**:在多个服务器之间保持文件系统的一致性。比如在一个集群环境中,通过 rsync 可以让多个节点的文件系统保持相同的内容,确保服务的一致性。
文件分发:将文件从一个中心位置分发到多个目标位置。例如,软件开发者可以使用 rsync 将更新后的软件包分发到多个测试服务器上。
1.本地模式
Rsync 的本地模式是指在同一台计算机或服务器上,将文件或目录从一个位置同步到另一个位置。这种模式主要用于本地数据备份、文件系统整理或者在本地开发环境种移动文件等场景。在对重要文件进行本地备份,或者将用户目录下的文件移动到外部存储设备挂载的本地目录时非常有用 (类似于U盘传输)。
Local: rsync [OPTION...] SRC... [DEST]
本地: 命令 选项参数 源文件 目标位置
[root@backup ~]#touch a.txt
[root@backup ~]#ll
total 0-rw-r--r-- 1 root root 0 Apr 8 09:58 a.txt
[root@backup ~]#ll /opt/
total 0
案例: 将a.txt拷贝到/opt下
[root@backup ~]#rsync -avz a.txt /opt/
sending incremental file list
a.txt
再次拷贝则默认的为增量拷贝,不会在进行拷贝
[root@backup ~]#rsync -avz a.txt /opt/
sending incremental file list
案例: 拷贝oldby目录下的内容需要在目录的后面加/
[root@backup ~]#ll yunzhongzi/
total 4-rw-r--r-- 1 root root 4 Apr 8 09:59 a.txt-rw-r--r-- 1 root root 0 Apr 8 10:00 b.txt
[root@backup ~]#rsync -avz yunzhongzi/ /opt/
sending incremental file list
./
a.txt
b.txt
sent 170 bytes received 57 bytes 454.00 bytes/sec
total size is 4 speedup is 0.02
[root@backup ~]#ll /opt/
total 4-rw-r--r-- 1 root root 4 Apr 8 09:59 a.txt-rw-r--r-- 1 root root 0 Apr 8 10:00 b.txt
案例: 拷贝yunzhongzi目录到/opt下
[root@backup ~]#ll
total 0
drwxr-xr-x 2 root root 32 Apr 8 10:01 yunzhongzi
[root@backup ~]#rm -rf /opt/*
[root@backup ~]#rsync -avz yunzhongzi /opt/
sending incremental file list
yunzhongzi/
yunzhongzi/a.txt
yunzhongzi/b.txt
sent 186 bytes received 58 bytes 488.00 bytes/sec
total size is 4 speedup is 0.02
[root@backup ~]#ll /opt/
total 0
drwxr-xr-x 2 root root 32 Apr 8 10:01 yunzhongzi
2.远程模式
将文件备份到本地,一旦本地磁盘损坏,备份数据也会丢失,这个时候则需要远程模式登场了,Rsync 的远程模式用于在本地计算机和远程计算机之间进行文件同步。这在分布式系统、服务器备份、远程文件分发等场景中应用广泛。比如,网站管理员可以将本地开发好的网站文件通过远程模式同步到远程服务器上,或者从远程服务器下载备份文件到本地。
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
拉取:
rsync: 命令
-avz: 参数
USER@: 用户
HOST: 主机IP地址 域名 主机名称
:SRC: 源文件
DEST: 目标位置/ 下载到本地的哪个目录
案例1.10.0.0.41拉取10.0.0.7上的/root/7.txt 到本地的当前目录
rsync -avz root@10.0.0.7:/root/7.txt ./
执行过程中需要10.0.0.7root用户的密码
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
push: 推送
rsync: 命令-avz: 参数选项
SRC: 文件/文件的位置/目录
USER@ 用户名
HOST: ip地址主机名称 域名
DEST: 目标位置
案例.10.0.0.41将yunzhongzi目录推送到10.0.0.7的/opt目录下
[root@backup ~]#rsync -avz yunzhongzi root@172.16.1.7:/opt/
root@172.16.1.7 password:
sending incremental file list
yunzhongzi/
yunzhongzi/a.txt
yunzhongzi/b.txt
注意: 如果不加用户,默认以当前系统登录用户身份进行远程连接,但是要对方的此用户名和密码
如下: 默认使用root进行远程连接41,需要提供41的root的密码
[root@web01 ~]#rsync -avz 10.0.0.41:oldboy ./
小结: 下载 远程服务器在前面
rsync -avz root@172.16.1.41:/etc/hosts .
上传: 远程服务器在后面 文件在前面
rsync -avz yunzhongzi root@172.16.1.41:/opt/
IP地址可以是域名: 前期得有域名和对应的IP地址
[root@backup ~]#rsync -avz 7.txt www.linuxnc.com:/tmp/
主机名称: 提前写入hosts解析文件中
[root@backup ~]#cat /etc/hosts
127.0.0.1
localhost localhost.localdomain localhost4 localhost4.localdomain4
::1
10.0.0.7
localhost localhost.localdomain localhost6 localhost6.localdomain6
web01
[root@backup ~]#rsync -avz 7.txt web01:/root/
3.守护进程模式(企业常用)
Rsync 守护进程模式允许 rsync 作为一个服务器运行,这样远程客户端就可以连接到这个服务器并进行文件的同步操作。它通过监听特定的端口(默认是 873 端口)来接收客户端的请求,这种模式在需要频繁进行远程文件同步的环境中非常有用,比如在服务器集群之间进行文件备份和分发等操作。
1.安装服务
yum -y install rsync
2.配置服务
[root@backup ~]#cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
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 yunzhongzi backup!
path = /backup
3.根据配置文件创建必要的数据
1)创建rsync虚拟用户
[root@backup ~]#useradd -M -s /sbin/nologin rsync
[root@backup ~]#id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
2)创建密码文件
[root@backup ~]#cat /etc/rsync.passwd
rsync_backup:123456
3)修改密码权限为600
[root@backup ~]#chmod 600 /etc/rsync.passwd
[root@backup ~]#ll /etc/rsync.passwd
-rw------- 1 root root 20 Apr 8 11:54 /etc/rsync.passwd
4)创建backup目录
[root@backup ~]#mkdir /backup
[root@backup ~]#ll -d /backup
drwxr-xr-x 2 root root 6 Apr 8 11:55 /backup
修改目录的权限为rsync用户
[root@backup ~]#ll -d /backup
drwxr-xr-x 2 root root 6 Apr 8 11:55 /backup
[root@backup ~]#chown rsync.rsync /backup
[root@backup ~]#ll -d /backup
drwxr-xr-x 2 rsync rsync 6 Apr 8 11:55 /backup
4.启动服务并加入开机自启
[root@backup ~]#systemctl start rsyncd
[root@backup ~]#systemctl enable rsyncd
4.测试检查 873端口
[root@backup ~]#netstat -tnulp
注意: 粘贴的时候按照源格式粘贴
1.vi 编辑文件
2.:set paste
客户端测试推送至服务器:
10.0.0.7 客户端
10.0.0.41 服务端
将10.0.0.7 家目录下的yunzhongzi目录推送到10.0.0.41服务端的backup模块
守护进程的客户端需要执行的命令格式:
Access via rsync daemon:
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST # 冒号后面必须是模块的名称
rsync -avz yunzhongzi rsync_backup@10.0.0.41::backup
在服务器下载文件: 只用模块默认下载所有的文件
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
[root@web01 ~]#rsync -avz rsync_backup@10.0.0.41::backup ./
Password:
receiving incremental file list
./
yunzhongzi/
yunzhongzi/7.txt
案例.指定下载7.txt
[root@web01 ~]#rsync -avz rsync_backup@10.0.0.41::backup/yunzhongzi/7.txt .
Password:
receiving incremental file list
7.txt
知识点小结:
1.rsync 增量 全量
2.rsync三种模式
本地模式 了解类似cp命令 优于cp
远程访问模式:
推送: 将本地的推送到目标服务器
rsync -avz a.txt root@172.16.1.7:/opt/
拉取: 将目标服务器的b.txt 下载到本地当前目录
rsync -avz root@172.16.1.7:/root/b.txt ./
守护进程模式:
服务端: 安装服务 配置服务 启动服务873
配置文件中的重点:
1.启动用户rsync 必须系统中存在的
2.游戏账号rsync_backup
3.游戏账号所在的文件 /etc/rsync.passwd 权限600
rsync_backup:123456自拟
4.模块名称和文件上传的目录位置
[hehe]
path = /data
rwxr-xr-x rsync rsync /data
客户端
推送: rsync -avz a.txt rsync_backup@172.16.1.41::hehe
拉取: rsync -avz rsync_backup@172.16.1.41::hehe/a.txt ./
rsync虽好,但是缺乏实时性,在实际应用中,咱们可以将rsync写进脚本,然后写进定时任务去备份,如果每天凌晨1:00进行备份,早晨6:00磁盘损坏,9:00上班时发现之后紧急处理,在这3个小时内,数据丢失,也是不小的损失,今天的rsync告一段落,明天内容——sersync和lsync~~~~
想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~