Linux下文件同步、备份神器之-------rsync

juzi3年前技术1821

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   


2.如果你喜欢用编译安装也是可以的,当前最新版本:


wget  https://download.samba.org/pub/rsync/src/rsync-3.2.3.tar.gz

 

tar -zxvf rsync-3.2.3.tar.gz

 

cd rsync-3.2.3

 

 ./configure --prefix=/usr/local/rsync --disable-lz4 --disable-xxhash --without-included-zlib --disable-zstd

 

make && make install 

 

ln  -s  /usr/local/rsync/bin/rsync /usr/bin/rsync

 

 

执行rsync

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


查看有没有开启873端口:telnet 78.159.xxx.238 873 如果没有提示连接错误,没有telnet命令的 yum  -y  install telnet 


配置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 root@78.159.xxx.238::backup /home/backup_html


 


 rsync -lrtvz --delete --progress --exclude "Seller_934" --password-file=/etc/rsyncd.pass root@78.159.xxx.238::backupimages /usr/backupimages


--exclude "Seller_934" #忽略这个文件夹


参数解析


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 root@78.159.xxx.238::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

————————————————

版权声明:本文为CSDN博主「或非与」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_27517377/article/details/105147583

标签: 服务器

相关文章

Linux让命令在后台执行

1、Linux下一般比如想让某个程序在后台运行,很多都是使用&在程序结尾来让程序自动运行。比如我们要运行mysql在后台:/usr/local/mysql/bin/mysqld_safe&nb...

shell定时任务——每10秒访问一次网页

想做个定时任务,可是crontab最小只能一分钟执行一次。还有就是访问有参数的链接,访问出来的的不一样。用crontab每分钟执行一次crontab.sh文件crontab命令-e : 执行文字编辑器...

后台执行命令:&和nohup command & 以及关闭、查看后台任务

1.nohup用途:不挂断地运行命令。语法:nohup Command [ Arg … ] [ & ]  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup....

如何快速找出Linux系统中的大文件

如何快速找出Linux系统中的大文件

在性能测试中,我们经常要关注系统磁盘空间,防止因磁盘空间占满而导致的报错。那么具体怎么查看磁盘空间的大小呢?怎么找到占用   空间最大的文件进而删除呢?    ...

LNMP一键安装包使用教程

LNMP一键安装包使用教程

系统需求:CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux发行版需要5GB以上硬盘剩余空间,MySQL...

如何快速找出Linux系统中的大文件?

  在性能测试中,我们经常要关注系统磁盘空间,防止因磁盘空间占满而导致的报错。那么具体怎么查看磁盘空间的大小呢?怎么找到占用   空间最大的文件进而删除呢? &...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。