小白带你学习Linux的rsync的基本操作(二十四)

简介: 小白带你学习Linux的rsync的基本操作(二十四)



前言

Rsync是一个开源的文件同步和备份工具。它可以通过局域网或互联网将文件从一个地方同步到另一个地方,保持两个位置的文件内容一致。Rsync在传输文件时仅传输文件的变化部分,而不是整个文件,这样可以大大加快文件传输的速度。

一、概述

   rsync是linux 下一个远程数据同步工具

   他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输

   会对比两个文件的不同部分,传输差异部分,因此传输速度相当快

   rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝

二、特性

1、快速

第一次传输全部,下一次传输差异

rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽

2、安全

可以使用scp、ssh等方式传输

直接通过socket连接

支持匿名传输、方便进行网站镜像

三、应用场景

增量同步

备份迁移

四、数据的同步方式

数据备份:拉取(下载)

pull

数据恢复:推送(上传)

push

五、rsync传输模式

本地传输

本地同步数据,类似于cp

远程传输

远程同步数据,类似于scp

守护进程

通过模块化的方式实现批量传输

六、rsync应用

安装

yum -y install rsync

如果已经安装,直接启动

第一步关防火墙和改宽容模式

systemctl stop firewalld && systemctl disable firewalld
setenforce 0

rpm -qi rsync

systemctl start rsyncd

监听端口号

TCP/873

netstat -anptl | grep rsync

七、rsync命令

1、格式

rsync [选项] 原始位置 目标位置

作为远程命令

拉取                rsync [OPTION...] [USER@]HOST:SRC... [DEST]

rsync 1.txt 192.168.28.129:/mnt

推送                rsync [OPTION...] SRC... [USER@]HOST:DEST

作为rsync服务

拉取                rsync [OPTION...] [USER@]HOST::SRC... [DEST]

                      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

推送             rsync [OPTION...] SRC... [USER@]HOST::DEST

                     rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

2、选项

-a           归档模式,递归并保留对象属性,等同于-rlptgoD

-v           -verbose           显示同步过程的详细信息

-z           在传输文件时进行压缩

3、举例

本地

rsync  -avz  abc/  /opt

远程

rsync -avz root@192.168.28.129:/opt

rsync -avz 1.txt  root@192.168.28.129:/opt

4、配置文件

/etc/rsyncd.conf

全局配置

address    独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP

port       指定 rsync 守护进程监听的端口号,默认 873

pid file     rsync 的守护进程将其 PID 写入指定的文件

log file     指定 rsync 守护进程的日志文件,而不将日志发送给 syslog

syslog facility   指定 rsync 发送日志消息给 syslog 时的消息级别

socket options  指定自定义 TCP 选项

lockfile   指定rsync的锁文件存放路径

timeout    超时时间

模块配置

path       指定当前模块的同步路径,该参数是必须指定的

comment   给模块指定一个描述

use chroot           在服务运行时要不要把他锁定在家目录,默认为 true

uid和gid            指定rsync运行用户和用户组,默认nobody

max connections      最大并发连接数,0为不限制

lock file             指定支持 max connections的锁文件。默认/var/run/rsyncd.lock

list                 指定列出模块列表时,该模块是否被列出。默认为 true

read only          只读选择,默认true

write only         只写选择,不让客户端从服务器上下载文件。默认false

ignore errors     忽略IO错误,默认true

ignore nonreadable 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。

dont compress      用来指定那些在传输之前不进行压缩处理的文件。

hosts allow  指定哪些主机客户允许连接该模块。默认值为 *

hosts deny  指定哪些主机客户不允许连接该模块

auth users   指定用于上传的用户名

secrets files    指定密码文件

守护进程传输

配置

uid=rsync

gid=rsync

fake super=yes     # 用于允许非root用户,在备份目录创建文件

list=false              # 默认true,允许查看本机有哪些模块

auth users=rsync_backup  # 用于指定认证用户

secrets file=/etc/rsync.passwd  # 指定认证用户密码

max connections=4                 # 允许最大连接数

read only=false                       # 默认yes,模块目录只读权限

ignore errors                          # 屏蔽错误报错

timeout=900                          # 指定rsync传输超时时间

[backup]

path=/backup

vim /etc/rsyncd.conf

创建用户        useradd rsync -s /sbin/nologin -M

useradd rsync -s /sbin/nologin -M rsync

创建认证用户的密码        echo 'rsync_backup:123456' >/etc/rsync.passwd

                                        chmod 600 /etc/rsync.passwd

echo 'rsync_backup:123456' >/etc/rsync.passwd
chmod 600 /etc/rsync.passwd

准备模块目录          mkdir /backup

                                chown rsync.rsync /backup

mkdir /backup
chown rsync.rsync /backup

重启服务          systemctl restart rsyncd

systemctl restart rsyncd

客户端远程传输            rsync -avz /etc/hosts rsync_backup@192.168.2.62::backup

rsync -avz /etc/hosts rsync_backup@192.168.28.128::backup

查看一下文件

回到客户端进入

插入信息

再上传一遍

服务器查看

这就是手动服务同步

通过密码文件实现免密传输

vim /etc/rsync.passwd             123456

vim /etc/rsync.passwd

chmod   600 /etc/rsync.passwd

chmod   600 /etc/rsync.passwd

rsync -avz /etc/hosts rsync_backup@192.168.2.62::backup --password-file /etc/rsync.passwd

5、练习

1、使用认证用户为jx_名字缩写,认证密码为班级编号

/etc/rsyncd.conf

2、模块名称为juexing

重启服务

3、客户端创建文件user.txt,内容为所有的用户信息

客户端先传过去看看

服务器查看

4、自行修改文件内容,在服务器上实现同步

删除剩四行

同样的命令在执行

回到服务器

八、rsync+inotfy实时同步

1、服务器端

安装网站服务,启动,但是不写首页文件

安装httpd

mount  /dev/sr0 /mnt
yum -y install httpd

修改主配置文件

uid = root

gid = root

[wwwroot]

   path = /var/www/html

   comment = backup export area

   read only = false

   hosts allow = 192.168.1.0/24

vim /etc/rsyncd.conf

2、开发客户端

安装inotify工具

inotify-tools

tar xf  inotify-tools-3.14.tar.gz

./configure && make && make install

搭建网站服务器

查看端口号

配置内核参数

vim /etc/sysctl.conf

fs.inotify.max_user_instances = 1024

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_watches=1048576

sysctl -P

inotifywait -mrq -e modify,create,move,delete /var/www/html

把客户端的wwwroot传回服务器

回主机查看

回客户端

再传一遍

回主机

编写脚本

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"

RSYNC_CMD="rsync -azH --delete /var/www/html/ 192.168.28.128::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

do

$RSYNC_CMD

done

客户机改文件

回服务器查看一下

赋予执行权限

chmod +x inotify_rsync.sh

写入文件开机自启文件

vim /etc/rc.local

/root/inotify_rsync.sh

相关文章
|
2天前
|
Linux 程序员 计算机视觉
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
14 0
|
2天前
|
自然语言处理 Java Linux
【Linux】开始学习进程替换吧!
通过学习进程替换,我们可以体会到多语言混搭的快乐,可以从C语言直接蹦到python ,也可以从c++里运行java代码。是不是很厉害!这是通过调度多个进程的效果,联系我们之前学习的进程,进程控制等概念。我们可以想要运行其他代码可以通过创建子进程来实现,但是这样也肯定是同一种语言,如果想要运行其他语言,那是不是有种方法可以调度一个进程来当做子进程呢??? 我们开始今天的学习吧!
11 0
|
2天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
11 0
|
2天前
|
编解码 Linux 数据安全/隐私保护
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
|
2天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
2天前
|
运维 监控 安全
【专栏】11 个 Linux 网络命令学习和熟练运用这些命令是提升网络管理能力的基础
【4月更文挑战第28天】本文介绍了11个必备的Linux网络命令,包括ifconfig、ip、ping、traceroute、netstat、tcpdump、ss、telnet、ftp、ssh和nmap,这些命令在网络配置、故障排查和性能监控中发挥关键作用。通过实例分析,强调了它们在实际工作中的综合应用,帮助运维工程师提升效率和应对网络挑战。学习和熟练运用这些命令是提升网络管理能力的基础。
|
2天前
|
Linux 开发工具 Windows
Linux基本操作——文件
Linux基本操作——文件
|
2天前
|
消息中间件 Unix Linux
Linux的学习之路:17、进程间通信(1)
Linux的学习之路:17、进程间通信(1)
27 1
|
2天前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
191 2
|
2天前
|
Linux
Linux的find命令使用
【5月更文挑战第11天】Linux的find命令使用
14 3