概述
什么是RSYNC
rsync的好姐妹
sync同步:刷新文件缓存,强制将修改过的数据块写入磁盘,并且更新超级快。
async异步:将数据先放到缓存区,在周期性(一般是30s)的去同步到磁盘
rsync远程同步:remote synchronous
数据同步过程
sync数据同步=>保存文件(目标)=》强制把缓存中的数据写入磁盘
asyn数据异步=》保存文件(目标)=》将数据先放到缓冲区,在周期性(一般是30s)的同步到磁盘,适合大批量数据同步的场景)
rsync特点
可以镜像保存整个目录树和文件系统
可以保留原有的权限
传输效率高,使用同步算法,只比较变化的(增量备份)
支持匿名传输,方便网站镜像,也可以做验证,加强安全
rsync与scp的区别
两者都可以实现远程同步,,但是相对比而言,rsync能力更强
1.支持增量备份
2.数据同步时保持文件的原有属性
RSYNC基本语法
man rsync
NAME
rsync -a fast,versatile,remote(and local ) file-copying tool
//一种快速、通用、远程、和本地的文件复制工具
本地文件同步
local:rsync [option...] SRC... [DEST]
远程文件同步
Access via renote shell
pull: rsync [option..] [user@] HOST:SRC... [DEST]
push: rsync [OPTION...] SRC... [USER@]HOST:DEST
option选项说明
-v 详细模式输出
-a归档模式,递归的方式传输文件,并保存文件的属性,equals -rlptgoD
-r 递归拷贝目录
-l 保留软链接
-p 保留原有权限
-t 保留原有时间(修改)
-g 保留属组权限
-o 保留属主权限
-D 等于--devices --specials 表示支持b,c,s,p类型的文件
-R 保留相对路径
-H 保留硬链接
-A 保留ACL策略
-e 指定要执行的远程shell命令
-E 保留可执行权限
-X 保留扩展属性信息 a属性
PUSH :推,相当于上传;PULL:拉,相当于下载
本地文件同步
本地文件同步:简单理解就是从一个位置(同步=>拷贝)拷贝到另外一个位置(类似cp)
案例:/dir1与dir2,dir1中创建了三个文件file1,file2,file3,使用rsync本地同步
mkdir /dir1
mkdir /dir2
touch /dir1/file{1..3}
rsync -av /dir1/ /dir2 =>把/dir1目录中的所有文件拷贝到dir2目录
rsync -av /dir1 /dir3 =>把/dir1目录整体同步到/dir3目录中
案例:rsync -R选项的应用(保留相对路径)
rsync -avR /dir1/ /dir2
案例:rsync --deleat(删除目标目录里多余的文件)
/dir1 === /dir2
file1、file2 file1、file2、file3
rsync --delete同步后,会自动删除file3文件(让dir1和dir2高度同步)
rsync远程文件同步
rsync -av 本地文件或目录 远程服务器用户名@远程服务器ip 目标路径
案例
把linux.txt文档传输到远程服务器端
rsync -av linux.txt root@服务器ip:/root/
下载文件到本地服务器端
rsync -av 远程用户名@远程服务器ip:目标文件
案例:把远程服务器的/etc/hosts文件下载到本地
rsync -av root@远程服务器ip:/etc/hosts .
如何不需要输密码就可以直接同步
ssh-keygen -t rsa -p
ssh-copy-id root@远程ip
即可实现免密的文件传输
SSH更改端口的文件同步
vim /etc/ssh/sshd_config
找到port:改一下端口
port:10086
重启一下
systemctl restart sshd
然后试一下
rsync -e "ssh" -p 10086 -av rsync.txt root@远程服务器Ip
rsync作为系统服务
默认情况下,rsync只是作为一个命令来进行使用的
思路
对外提供服务-->端口监听--->启动服务---->启动脚本(没有)---->配置文件(修改需求)
第一步
启动rsyncd服务
systemctl start rsyncd
有的版本没有
先创建一个
touch /etc/rsyncd.conf
在启动
rsync --daemon
ps -ef | grep rsync
rsyncd服务的配置文件/etc/rsyncd.conf
man 5 rsyncd.conf
rsync托管xinetd
为什么要进行服务托管
独立服务:独立启动脚本:ssh ftp nfs dns...
依赖服务;没有独立的启动脚本rsync telnet 依赖xinetd服务(独立服务)
如何将rsync托管给xinetd服务管理?
第一步:在系统中安装xinetd服务
yum -y install xinetd
rpm -ql xinetd
rpm -qa rsrync
第二步 编写xinetd.conf文件(/etc/xinetd.conf)
man 5 xinted.conf
文件内容
only_from 只允许访问
rc_access 拒绝访问
access_times 控制访问服务的时间段
log_type 日志类型
interface 并发连接数
per_source 每个ip 的最大连接数
/ertc/xinetd.d文件 包含子配置目录(增加rsync、telnet)
第三步:手工创建 /etc/xinetd.d
vim /etc/xinetd.d/rstnc
service rsync
{
disable = no //开头,no表示开启该服务,yes表示关闭该服务
flags = IPV6
socket_type=stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure = USERID
}
这样服务就托管结束了