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 源。⽬标⽬录