什么是rsync
Sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块async 异步:将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘,
Sync数据同步 =>保存文件(目标)=>强制把缓存中的数据写入磁盘(立即保存),实时性要求比较高的场景
asyn数据异步 =>保存文件(目标)=>将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘,适合大批量数据同步的场景
rsync特点
可以镜像保存整个目录树和文件系统
可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time)软硬链接,文件acl,文件属性(attributes)信息等
传输==效率高==,使用同步算法,只比较变化的(增量备份)file1.txt file2.txt file3.txt$A服务器)
rsync实现数据同步=>只同步file3.txt =>增量备份
file1.txt file2.txt(B服务器)
支持匿名传输,方便网站镜像;也可以做验证,加强安全
[root@localhost ~]# yum -y install rsync
PUSH:推,相当于上传;PULL:拉,相当于下载
2、本地文件同步
本地文件同步简单理解就是把文件从一个位置(同步=>拷贝)到另外一个位置(类似cp)
在家目录中创建一些文件,将文件同步到opt下
[root@localhost ~]# cd
[root@localhost ~]# mkdir folder
[root@localhost ~]# mkdir folder/f{1..3}
[root@localhost ~]# tree
[root@localhost ~]# touch folder/f1/file{0..4}
[root@localhost ~]# tree
Folder目录下的文件传递到opt目录下
rsync -av /dir1/ /dir2 把/dir1录中的所有文件拷贝到/dir2目录中
rsync -av /dir1 /dir3 把/dir1日录整体同步到/dir3目录中
[root@localhost ~]# rsync -av folder/ /opt/
[root@localhost ~]# ls /opt/
[root@localhost ~]# rsync -av folder /opt/
[root@localhost ~]# rm /opt/* -rf
[root@localhost ~]# ls -l /opt/
总用量 0
[root@localhost ~]# rsync -avR folder/ /opt/
[root@localhost ~]# tree /opt/
现在不传递到opt,就在本地几个目录传
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
[root@localhost ~]# touch folder/f1/file5
[root@localhost ~]# tree folder/
不会重复传,会更新新修改的
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
实现自动同步
[root@localhost ~]# rm -rf folder/f1/file0
[root@localhost ~]# rsync -av --delete folder/f1/ folder/f2/
[root@localhost ~]# tree folder/
修改f1中的内容,f2中的没有改变
[root@localhost ~]# vi folder/f1/file1
[root@localhost ~]# cat folder/f1/file1
大家好我是刘包包,哈哈哈
[root@localhost ~]# cat folder/f2/file1
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
sending incremental file list
./
file1
sent 210 bytes received 38 bytes 496.00 bytes/sec
total size is 37 speedup is 0.15
[root@localhost ~]# cat folder/f2/file1
大家好我是刘包包,哈哈哈
修改的时候文件的修改也会被rsync同步
[root@localhost ~]# touch folder/f1/file0 -m -d "2024-7-14 00:00"
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
[root@localhost ~]# touch folder/f1/file0 -m -d "2024-7-13 00:00"
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
[root@localhost ~]# ls -l folder/f1/file0
-rw-r--r--. 1 root root 0 7月 13 00:00 folder/f1/file0
[root@localhost ~]# chmod g+w folder/f1/file0
[root@localhost ~]# ls -l folder/f1/file0
-rw-rw-r--. 1 root root 0 7月 13 00:00 folder/f1/file0
[root@localhost ~]# rsync -av folder/f1/ folder/f2/
[root@localhost ~]# ls -l folder/f2/file0
-rw-rw-r--. 1 root root 0 7月 13 00:00 folder/f2/file0
同步文件内容修改,文件删除,以及文件的属性修改
远程文件同步
2台主机都支持rsync的服务
rsync -ac 源 用户@主机地址
获取数据pu 拉取,发送数据push推送数据
要实现远程同步,要求对面主机也安装rsync
向另外一台主机 /tmp目录同步数据
[root@localhost ~]# history > /history.txt
[root@localhost ~]# scp -r ./history.txt [email protected]:/usr/share/nginx/html/
[email protected]'s password:
scp: /usr/share/nginx/html/: No such file or directory
[root@localhost ~]# scp -r ./history.txt
从远程主机拉取数据
如果源目录不以/结尾,整个目录同步包含目录文件,带斜杠,只同步目录下的文件
-R保留目录的相对路径,也会携带目录
同步的内容 文件的新增 修改,删除(--delete) 属性(时间,权限)
使用计划任务每30s推送一次代码如果文件根本没有修改,就没有必要推送自动监听文件被修改的行为,再自动推送
编辑vi /rsync。Conf
添加两个属性
[root@localhost ~]# vi /etc/rsync.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
标签:f1,rsync,同步,Linux,folder,root,localhost From: https://blog.csdn.net/m0_72009757/article/details/140526913