linux rsync 同步文件 ,linux两台主机增量同步文件

linux rsync文件夹增量同步

就是说用rsync去同步一个很大的文件夹几十G,第一次的时候会同步几十G的数据,然后又更新/删除的时候只需要同步跟新、删除的文件)用的是xxx算法,这不是我们需要管的,大多说情况我们需要知道怎么用就行了

问题1:用rsync同步文件夹,我的主机用的是ssh带密码登录的,可以用吗?

回答:用rsync同部文件、文件夹,不需要知道你的ssh key,也不需要知道你登录账号密码,就像QQ一样,它的运行不需要知道你的电脑账号密码,你只要开着机,把软件运行,然后设置你rsync  ( QQ ) 密码不要被别人知道就行了

问题2:用rsync同步文件,设置的密码跟系统的密码有关系吗?

回答:同上,你在开机的状态下,启动rsync这个软件,然后设置相应的参数,它就会把文件/文件夹共享出去,别人通过你的ip密码就能访问到相应的文件/文件夹

linux生产服务器的文件定时同步到备用的服务器(ps我们的代码其实已经走git了,只是一些图片文件和配置文件是没有用版本控制的,其实嘛我觉得图片文件夹也最好进入版本控制吧,只是仓库大一点而已)

生产服务器ip :78.159.xxx.238 (下面称为服务器)

从服务器ip :78.159.xxx.209    (下面成为客户端)

备份生产服务器的 /home/html 文件夹到从服务器   /home/backup_html文件夹

1.安装rsync  :  yum -y install  rsync   

记得开启要873端口哦,rsync默认是用这个端口的

查看有没有开启873端口:telnet 78.159.xxx.238 873 如果没有提示连接错误

配置rsync服务端 : vim  /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:

uid = root
gid = root
use chroot = yes
max connections = 4
read only = yes
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
timeout = 1800
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[backup]
path=/home/html
ignore errors
auth users = root
secrets file = /etc/rsyncd.pass

 

新建编辑密码文件   vim /etc/rsyncd.pass   输入你要的密码:格式root:123456

注意这里的密码跟你服务器的root密码没有关系的,你把873端口开放出来了,然后在别的机器就可以通过你这个密码和端口访问到你设置的文件夹(例如这里的:/home/html ),别人知道我的ip用123456这个密码,就可以访问到我的/home/html这个目录不过我只设置了它能读取,还是不能修改我的文件夹的

给密码文件设置权限:chmod 600 /etc/rsyncd.pass    (注意是600权限哦,其他权限听说不行,自行测试)

启动rsyncd服务 :service rsyncd start     

如果你新增了文件夹需要重启:service rsyncd restart 

查看进程占用端口:netstat -tunlp  (启动rsyncd服务后会显示873端口被rsync占用)

 

到这里服务端的配置已经完成了,下面配置rsync的客户端

rsync客户端:同样是安装rsync:yum -y install rsync

启动rsyncd服务 :service rsyncd start 

新建编辑密码文件   vim /etc/rsyncd.pass   输入你要的密码:123456  (不要root: 不然连接的时候是无法连接哦)

   同样给客户端密码文件权限:chmod 600 /etc/rsyncd.pass

在客户端执行:

rsync -avzP --delete --progress --password-file=/etc/rsyncd.pass [email protected]::backup /home/backup_html

参数解析

78.159.xxx.238是服务端的ip  

/home/backup_html是你想要把服务端的文件同步到这台机的那个位置

::backup    backup 是服务端那边的认证的模块名(你在服务端叫什么这边就叫什么)

--password-file   路径是我们刚才新建的密码文件

-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件);

-z 传输时压缩;

-P 传输进度;

-v 传输时的进度等信息;

--progress 指显示

--delete 指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

 

然后设置定时任务多久执行一次更新,rsync它的算法文件夹的内容没有改变不用更新的,就是增量更新

设置脚本执行的时间:crontab -e,添加如下内容

vim /etc/rsyncd.sh   

把这段东西扔进去:/usr/bin/rsync -avzP --delete --progress --password-file=/etc/rsyncd.pass [email protected]::backup /home/backup_html

chmod  755 /etc/rsyncd.sh

*/1 * * * * sh /etc/rsyncd.sh #第1分钟执行一次同步;

如果你想1秒钟执行一次就写个shell,可以翻一下我其他文章有写过的

 

rsync error:error starting client-server protocol(code 5) at main.c(1503) 

如果有报错,大多数是客户端密码设置的问题,客户端的密码不需要写用户名的直接写跟服务端的密码一样就行了

 

参考文章(文章有一点难读懂,基本上跟他的一样,就是有些地方我修改过更好读懂一点):https://blog.csdn.net/yao940622/article/details/102511689?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章