Linux系统下数据同步服务RSYNC

1、什么是rsync

rsync 是一种非常流行的文件同步和传输工具,主要用于在本地主机和远程主机之间进行文件的备份和镜像。它特别适用于大量数据的传输,因为它可以仅同步那些发生变化的文件,从而节省带宽和时间。

2、rsync 主要特点:

增量传输:rsync 只传输那些发生变化的文件,而不是每次都传输整个文件集,这使得它在处理大量数据时非常高效。

压缩传输:rsync 可以在传输过程中压缩数据,进一步减少传输所需的带宽。

多线程支持:rsync 支持多线程传输,可以显著提高传输速度。

权限和时间戳保留:rsync 可以保留文件的权限、时间戳和链接,确保文件在传输过程中的一致性。

灵活的命令行选项:rsync 提供了丰富的命令行选项,允许用户根据需要定制传输过程。

广泛的平台支持:rsync 可以在大多数操作系统上运行,包括 Linux、Unix、Windows 等。

3、rsync 的基本命令格式:

rsync [选项] [源] [目标]

源:可以是本地文件、目录或远程主机上的文件。

目标:可以是本地文件、目录或远程主机上的文件。

rsync 选项包括:

-a:归档模式,保留文件的权限、时间戳等。

-z:压缩传输。

-v:详细模式,显示传输过程的详细信息。

--exclude:排除某些文件或目录。

--delete:删除目标目录中源目录不存在的文件。

将本地目录 /home/user/data 同步到远程主机 example.com 上的 /home/user/data 目录:

rsync -avz /home/user/data example.com:/home/user/data

4、rsync与scp的区别

rsync 和 scp 都是常用的命令行工具,用于在本地主机和远程主机之间传输文件。它们各有优缺点,适用于不同的场景。以下是它们的主要区别:

(1)定义和用途

(Secure Copy Protocol)是 SSH(Secure Shell)套件的一部分,提供一种安全且经过身份验证的方法来在本地和远程主机之间复制文件。它加密传输的文件,确保数据在传输过程中的安全 。
 Rsync 是个用于同步文件和目录的工具,通过仅传输源和目标之间的差异来提供快速、增量的文件传输。它可以通过 SSH 来保护传输的数据,并且常用于跨系统备份和同步文件,因其效率和灵活性而备受青睐 。

(2)语法和选项:

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2

常用选项包括 `-P`(指定 SSH 端口)、`-p`(保留原始文件的修改时间、访问时间和访问权限)、`-r`(递归复制整个目录) 。
SCP 默认通过 SSH 运行,提供加密和身份验证,确保文件传输的安全性 。
Rsync默认使用 Rsync 协议,但也可以通过 SSH 运行以提供与 SCP 相同的安全级别。不过,Rsync 还可以在守护进程模式下运行,这可能需要额外的安全配置 。

(3)性能:
SCP在传输单个文件或首次传输数据时通常更快,因为它直接复制整个文件内容,不需要检查差异Rsync 通过比较源和目标文件来传输差异部分,这在处理大量数据时更高效,但可能会在比较过程中占用更多 CPU 资源 。

(4)中断传输处理:
SCP没有内置机制来恢复中断的传输,如果传输被中断,需要从头开始 。
Rsync 能够恢复中断的传输,使其在传输大文件或在不稳定的连接上更可靠 。

(5)文件和目录同步:
SCP 适合简单的文件传输任务,不支持增量复制和同步功能 。
Rsync 适合执行复杂的同步任务,尤其是定期备份和镜像,因为它只同步变化的部分 。

(6)资源占用:
SCP 在传输过程中占用的系统资源较少,不会显著影响系统的正常使用 。
Rsync 在处理小文件众多的情况下,可能会导致硬盘 I/O 较高,影响系统性能 。

(7)文件属性和链接:
SCP 在复制目录时,可能会丢失符号链接,需要额外处理 。
Rsync可以保留符号链接,并提供更多的选项来处理文件属性和链接 。

总结来说,SCP更适合简单的文件传输和首次传输,而 Rsync更适合需要高效同步和备份的场景,尤其是在处理大量数据时 。

5、本地文件同步

下载rsync软件包

 下载完成

创建在/dir1 /dir2与dir3中创建三个文件file,file2,fie3,使用rsync本地同步

使用rsync -R(保留相对路径)

 

删除目标目录中多余的文件

 

远程文件同步(两台主机同时安装rsync)

push:上传文件到远程服务器端

(将rlinux.txt)文档传输到远程服务器端(172.16.20.3)

首先创建linux.txt文档,在文档中写入内容

将linux.txt文档传输到远程服务器端

把shop文件夹传输到远程服务器端(172.16.20.3)

把远程服务器(172.16.20.3)的/etc/hosts ./文件夹下载到本地

rsync远程同步数据时,默认情况下需要密码,如何实现无密码同步?

(可以使用ssh免密操作)

ssh-keygen -t rsa -P ""

ssh-copy-id root@10.1.1.100

默认情况下,rsync只是作为一个命令来进行使用(在查询进程时,找不到对应的路径)但是rsync提供了一种作为系统服务的实现方式

Linux系统服务的思路:

对外提供服务——>端⼝监听——>==启动服务==——>启动脚本——>配置⽂件 第⼀步:启动rsyncd服务(CentOS6中没有,CentOS7中有这个服务)

第一步:启动rsyncd服务

systemctl start rsyncd

配置rsync服务的配置文件/etc/rsyncd.conf

增加两个属性

编辑rsync密码

[root@localhost ~]# vi /etc/rsync.secrets

[root@localhost ~]# cat /etc/rsync.secrets

zhangsan:zhangsan

lisi:lisi

RSYNC集合INOTIFY工具实现代码实时同步

安装监听工具

[root@localhost ~]# yum -y install inotify-tools

任务解决方案

一、环境准备

第一步:关闭防火墙和selinux

永久关闭selinux

vim/etc/selinux/config

第二步:更改主机名称

 hostnamectl set-hostname code.itcast.cn

 hostnamectl set-hostname backup.itcast.c

第三步:更改ip地址(静态ip)

vim /etc/sysconfig/network-scripts/ifcfg-ens33

vim /etc/sysconfig/network-scripts/ifcfg-ens33

第四步:关闭network Manager

systemctl restart network

systemctl stop NetworkManager

systemctl disable NetworkManager

第五步:配置yum源(前面笔记有记录)

第六步:时间同步

ntpdate cn.ntp.org.cn

二、任务解决方案

第一步:准备代码文件

mkdir /app/java_project -p

mkdir /app/java_project/aa{1..3}

 touch /app/java_project/file{1..9}.java

第二步:将rsync作为系统服务器运行

vim /etc/rsyncd.conf

systemctl start rsyncd

ps -ef | grep rsync

netstat -tnlp | grep rsync

第三步:创建备份目录

# mkdir /backup/app1_java -p

第四步:测试rsync是否可以连接rsync服务

rsync -a root@10.1.1.10::

下载文件到本地

 rsync -av root@10.1.1.10::app /backup/app1_java

第五步:编写计划任务—+shell的脚本文件,自动实现代码备份

Code代码服务器 => 10.1.1.10 /app/java_project

Backup备份服务器 => 10.1.1.100 Code:

① 准备代码

② 编写/etc/rsyncd.conf⽂件,定义同步代码⽬录

③ 启动rsyncd服务

Backup:

① 测试rsync是否可以连接到Code服务器上的rsyncd服务

② 创建备份⽬录

③ 编写计划任务,凌晨1点03去Code服务器同步代码

④ 编写rsync_java.sh⽂件,实现同步操作

rsync总结

rsycn 安装 Yum -y install

rsync Rsync 【选项】源⽂件 ⽬标⽬录

1.本地同步:

rsync -av ~/abc/ /opt/ 同步⽂件的内容,⽂件的属性 ⽂件的新增 修改 删除(--delete) rsync -av /⽬录 /tmp。

同步⽬录下的⽂件 rsync -av /⽬录/ /tmp/ #同步⽬录 rsyn c -avR 保存相对路径,其实也就是同步了⽬录

2.远程同步:

要求两台主机要应该安装rsync服务 ⽤法和本地同步相同

rsync -av root@192.168.71.135:/opt/ /tmp/ 拉取 pull

rsync -av /tmp/ root@192.168.71.135:/tmp. push 推送 需要输⼊密码,需要免密,

这个需要的密码也是使⽤sssh服务验证,所以,直接ssh免密 设置好之后就直接⽀持rsync

3.同步服务器的设置:

启动服务

systemctl start rsyncd

修改配置⽂件

vim /etc/rsyncd.conf

[abc]

path=/app/javaproject/

Log file=/var/log/rsync.log

重启rsync服务

systemctl restart rsyncd

在另⼀台主机上拉取rsync服务中的项⽬ 测试是否能够检测到项⽬ 检测到配置的abc

Rsync -a root@192.168.71.135::

abc

Rsync -av 源。⽬标⽬录

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值