Linux的rsync远程数据同步工具
Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。
rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,
这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。
OS:ubuntu server 10.04
server:192.168.64.128
client:192.168.64.145
server
1.ubuntu server 10.04默认已安装rsync,rsync服务默认不是启动的,我们要修改下面的文件。
$sudo vi /etc/default/rsync
RSYNC_ENABLE=true #false改true
2.修改配置文件
$sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc #已默认安装的软件,默认不启动的似乎都要这么做
我们先来查看一下这个文件
$sudo cat /etc/rsyncd.conf
# sample rsyncd.conf configuration file
# GLOBAL OPTIONS
#motd file=/etc/motd #登录欢迎信息
#log file=/var/log/rsyncd #日志文件
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
#指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。
#syslog facility=daemon
#自定义tcp选项,默认是关闭的
#socket options=
#以下是模块信息,我们可以创建多个模块
# MODULE OPTIONS
[ftp]
comment = public archive #模块描述
path = /var/www/pub #需要同步的路径
use chroot = yes #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。
# max connections=10 #最大连接数
lock file = /var/lock/rsyncd #指定支持max connections参数的锁文件。
# the default for read only is yes...
read only = yes #只读选项
list = yes #客户请求时可用模块时是否列出该模块
uid = nobody #设定该模块传输文件时守护进程应该具有的uid
gid = nogroup #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限
# exclude = #用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定是exclude还是include #这个我的理解是排除目录中不需同步的文件
# exclude from = #可以指定一个包含exclude模式定义的文件名
# include = #与exclude相似
# include from = #可以指定一个包含include模式定义的文件名
# auth users = #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)
# secrets file = /etc/rsyncd.secrets #该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600
strict modes = yes #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true
# hosts allow = #允许的主机
# hosts deny = #拒绝访问的主机
ignore errors = no #设定rsync服务器在运行delete操作时是否忽略I/O错误
ignore nonreadable = yes #设定rysnc服务器忽略那些没有访问文件权限的用户
transfer logging = no #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
# log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. #设定日志格式
timeout = 600 #超时设置(秒)
refuse options = checksum dry-run #定义一些不允许客户对该模块使用的命令选项列表
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩
日志格式选项列表:
%h:远程主机名
%a:远程IP地址
%l:文件长度字符数
%p:该次rsync会话的进程id
%o:操作类型:"send"或"recv"、”del.”
%f:文件名
%P:模块路径
%m:模块名
%t:当前时间
%u:认证的用户名(匿名时是null)
%b:实际传输的字节数
%c:当发送文件时,该字段记录该文件的校验码
下面我们来定义自己的conf文件
# sample rsyncd.conf configuration file
# GLOBAL OPTIONS
#motd file=/etc/motd
log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
syslog facility=daemon
#socket options=
# MODULE OPTIONS
[rsync_bk]
comment = public archive
path = /home/rsync_bk #指定路径,如果没有这个目录自己建。
use chroot = no
# max connections=10
lock file = /var/lock/rsyncd
# the default for read only is yes...
read only = yes
list = yes
uid = nobody
gid = nogroup
# exclude =
# exclude from =
# include =
# include from =
auth users = rsync #rsync连接时的用户名
secrets file = /etc/rsyncd.secrets
strict modes = yes
hosts allow = 192.168.64.145
# hosts deny =
ignore errors = yes
ignore nonreadable = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
创建一个密码文件
$sudo vi /etc/rsyncd.secrets
rsync:123
$sudo chmod 0600 /etc/rsyncd.secrets
启动rsync
sudo /etc/init.d/rsync start
client
我们再来看一下客户端的操作,一般客户端不需要进行特殊的配置,直接同步即可
rsync -vzrtopg --progress rsync@192.168.64.128::rsync_bk . #.为当前目录,在服务端touch一个文件,同步后就会出现,当然你也可以指定一个位置比如/databk,需注意所建立的权限!
我们把这个同步工作交给crontab去执行。首先我们要创建一个密码文件
$sudo vi /etc/rsync.pwd输入123,保存 #密码要一致
!注意:下面这两步操作是必须的,没有足够权限同步就会不成功,ls -l 你所指向的目录
sudo chmod 0600 /etc/rsync.pwd
sudo chown 普通用户:普通用户组 /etc/rsync.pwd
然后我们打开crontab,使它自动同步
$crontab -e
* * * * * rsync -a --password-file=/etc/rsync.pwd rsync@192.168.64.128::rsync_bk /databk
crontab随机启动 sudo vi /etc/rc.local
参数说明:
-v verbose,即详细模式
-z 压缩
-r recursive 递归
-topg 保持文件原有属性,一般不用加
--progress 用来显示详细进度情况
--delete 表示如果服务器删除了一个文件,客户端也应对应删除
--exclude="*.sh" 表明不包括某些文件
--password-file=/etc/rsync.pwd 指定所使用的密码文件
最后一项是需要同步的目录
注意指定使用的密码文件中只需要有密码,不要有用户名。
------------------------------------------------------------------------
1.在本地机器上对两个目录同步
$ rsync -zvr filename1 filename2
上述代码是将filename1中的文件与filename2中的文件同步,如果将filename2中的文件同步到filename1中,修改代码为:
$ rsync -zvr filename2 filename1
2.使用rsync –a 同步保留时间按标记
$ rsync -azv filename1 filename2
使用上述命令,将filename2中新同步的文件的时间与filename1中的创建的时间相同,
它保留符号链接、权限、时间标记、用户名及组名相同。
3.从本地同步文件到远程服务器
$rsync -avz filename1 ubuntu@192.168.0.1:/home/ubuntu/filename2
上述命令是将本地的filename1同步到远程192.168.0.1的主机上。
注意:如果远程主机的端口不是默认的22端口,假如是3000端口,上述的命令修改为,
$ rsync -avz '-e ssh -p 4000' filename1 ubuntu@192.168.0.1:/home/ubuntu/filename2
4.将远程服务器的文件同步到本地
与步骤3类似,只是将filename1与远程服务器的位置对换一下,
$rsync -avz ubuntu@192.168.0.1:/home/ubuntu/filename2 filename1
同理如果端口不是22,使用以下命令
$ rsync -avz '-e ssh -p 4000' ubuntu@192.168.0.1:/home/ubuntu/filename2 filename1
转载于:https://blog.51cto.com/zhaoshilei/1890034
Linux的rsync远程数据同步工具相关推荐
- rsync远程数据同步工具
一.简介 1.认识 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来 ...
- rsync远程数据同步工具的使用
准备工作 虚拟机1: 192.168.24.41, 用于搭建rsync服务器 虚拟机2: 192.168.26.68, 用于搭建rsync客户端 虚拟机1和虚拟机2均为centos7; 1. 检查 ...
- Linux 命令之 rsync -- 远程数据同步工具
没有时间整理,暂时参考这里:https://tool.lu/command/detail.html?name=rsync
- Linux之Rsync+inotify数据同步
rsync远程同步 rsync(Remote Sync): 是一款开源,快速,多功能的可实现本地或远程主机数据同步与增量备份的优秀工具.(数据同步与备份的工具)可使本地主机不同分区或目录之间及本地和远 ...
- Linux rsync远程文件同步工具:只对差异文件进行更新
介绍 安装 yum -y install rsync #启动rsync服务 #systemctl start rsyncd.service #systemctl enable rsyncd.servi ...
- 【Linux】Rsync远程同步及备份工具(Rsync简介、Rsync安装、rsync认证方式)
一.Rsync简介 rsync(Remote synchronization)是Liunx/Unix下的一个远程数据同步工具. 它可通过LAN/WAN(局域网/广域网)快速同步多台主机间的文件和目录, ...
- linux运维笔记:Rsync数据同步工具
linux运维笔记:Rsync数据同步工具 1-Rsync简介 Rsync英文全称是Remote synchronization,Rsync具有可以使本地和远程两台主机之间的数据快速复制和同步镜像.远 ...
- Linux实战教学笔记21:Rsync数据同步工具
原文地址:https://www.cnblogs.com/chensiqiqi/p/6514315.html 目录 第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsy ...
- 【基础】:Rsync数据同步工具
第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...
最新文章
- nginx 反向代理负载均衡 tomcat集群应用
- 【php7扩展开发一】注册一个内部函数hello world
- python中使用pickle进行序列化
- NET问答: 如何将十六进制的 #FFDFD991 转成 C# 中的 Color 类?
- 参与就有1000块,30W奖池你占一半 | 帆软开发者大赛招募
- 火狐浏览器走局域网中的代理ip
- c语言文件名错误的是,C语言程序错误,不能正常读写文件,求解啊
- 单片机 防破解 技术论述
- 为移动硬盘(硬盘盒)安装linux(傻瓜式,简单,高效)
- 审计专业毕业论文有什么好写一点的论文选题吗?
- L2十档行情逐笔成交数据实战技巧
- OSPF区域划分和区域间路由(三类LSA)
- 阿里云服务器ECS(VPS)介绍及使用视频教程和优惠活动
- 服务端开发框架及技术(转)
- Java6面向对象编程创建一个矩形类, 求周长 面积
- 卡路里与脂肪重量的换算
- 辨别支付宝各种支付场景
- 机器学习-无监督学习-聚类:聚类方法(二)--- 基于密度的聚类算法【DBSCAN文本聚类算法,密度最大值文本聚类算法】
- discuz插件 inc.php,discuz的插件是怎么操作数据库的?
- 利用python进行数据分析_从删库到跑路
热门文章
- android自定义属性dimen,android代码里的dimen
- .实现 linkedlist 类java_面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
- 科大讯飞ai研究院_科大讯飞1024开发者大会:让AI赋能行业数字化升级
- matlab字母随机排列,matlab实现1n整数的一个随机排列
- python 一行_一行 Python 代码搞定炫酷可视化
- linux文件 内存映射 锁,linux – mmap:将映射文件立即加载到内存中吗?
- HTML鼠标悬停图片置顶,jquery实现鼠标悬浮停止轮播特效
- c语言如何用双重循环去重,c语言中一个一维数组怎样去重?
- opencv 腐蚀 matlab,Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换...
- java线程同步的死锁_Java基础之线程5-线程同步死锁