Linux 远程数据同步工具详解_linux 远程同步文件

# mkdir src
# touch src/{1,2,3,4}
# mkdir dest
# rsync -av src/ dest/ --将 src 目录里的所有的文件同步至 dest 目录(不包含src本身)
# rsync -av src dest/ --将 src 目录包括自己整个同步至 dest 目录
# rsync -avR src/ dest/ --即使 src 后面接有 / ,效果同上


**2、局域网间同步**


环境:172.16.22.11



# mkdir src
# touch src/{a,b,c,d}
# mkdir dest
# rsync -av 172.16.22.12:/data/test/src/ dest/ --远程同步至本地,需输入root密码
# rsync -av src/ 172.16.22.12:/data/test/dest/ --本地文件同步至远程
# rsync -av src 172.16.22.12:/data/test/dest/ --整个目录同步过去
# rm -rf src/d --删除一个文件 d
# rsync -av --delete src/ 172.16.22.12:/data/test/dest/ --delete,从目标目录里面删除无关的文件


**3、局域网指定用户同步**


—172.16.22.12



# useradd george
# passwd george
# mkdir /home/george/test
# touch /home/george/test/g{1,2,3,4}


—172.16.22.11



# rsync -av src ‘-e ssh -l george’ 172.16.22.12:/home/george --本地同步至远程
# rsync -av 172.16.22.12:/home/george/test/g* ‘-e ssh -l george -p 22’ dest/


### **三、daemon模式**


环境:192.168.22.11


**1、服务启动方式**


**1.1、对于负荷较重的 rsync 服务器应该使用独立运行方式**



# yum install rsync xinetd --服务安装
# /usr/bin/rsync --daemon


**1.2、对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式**



# yum install rsync xinetd --服务安装
# vim /etc/xinetd.d/rsync --配置托管服务,将下项改为 no
disable = no
# /etc/init.d/xinetd start --启动托管服务 xinetd
# chkconfig rsync on
# netstat -ntpl | grep 873 --查看服务是否启动


**2、配置详解**


两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件


**全局参数**


* 在全局参数部分也可以定义模块参数,这时该参数的值就是所有模块的默认值
* address —在独立运行时,用于指定的服务器运行的 IP 地址;由 xinetd 运行时将忽略此参数,使用命令行上的 –address 选项替代。默认本地所有IP
* port —指定 rsync 守护进程监听的端口号。由 xinetd 运行时将忽略此参数,使用命令行上的 –port 选项替代。默认 873
* motd file —指定一个消息文件,当客户连接服务器时该文件的内容显示给客户
* pid file —rsync 的守护进程将其 PID 写入指定的文件
* log file —指定 rsync 守护进程的日志文件,而不将日志发送给 syslog
* syslog facility —指定 rsync 发送日志消息给 syslog 时的消息级别
* socket options —指定自定义 TCP 选项
* lockfile —指定rsync的锁文件存放路径
* timeout = 600 —超时时间


**模块参数**


模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的


**基本模块参数**


* path —指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的
* comment —给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户


**模块控制参数**


* use chroot = —默认为 true,在传输文件之前首先 chroot 到 path 参数所指定的目录下;优点,安全;缺点,需要 root 权限,不能备份指向 path 外部的符号连接所指向的目录文件
* uid = —指定该模块以指定的 UID 传输文件;默认nobody
* gid = —指定该模块以指定的 GID 传输文件;默认nobody
* max connections —最大并发连接数,0为不限制
* lock file —指定支持 max connections 参数的锁文件。默认 /var/run/rsyncd.lock
* list —指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。默认为 true,显示
* read only = —只读选择,也就是说,不让客户端上传文件到服务器上。默认true
* write only = —只写选择,也就是说,不让客户端从服务器上下载文件。默认false
* ignore errors —忽略IO错误。默认true
* ignore nonreadable —指定 rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。false
* timeout = —该选项可以覆盖客户指定的 IP 超时时间。从而确保 rsync 服务器不会永远等待一个崩溃的客户端。对于匿名 rsync 服务器来说,理想的数字是 600(单位为秒)。0 (未限制)
* dont compress —用来指定那些在传输之前不进行压缩处理的文件。该选项可以定义一些不允许客户对该模块使用的命令选项列表。必须使用选项全名,而不能是简称。当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。例如,要防止使用压缩,应该是:”dont compress = ”。.gz .tgz .zip .z .rpm .deb .iso .bz2 .tbz


**模块文件筛选参数**


* exclude —指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 –exclude 来指定模式
* exclude from —指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取 exclude 列表定义
* include —指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中。这等同于在客户端命令中使用 –include 来指定模式
* include from —指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义


**模块用户认证参数**


* auth users —指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块(和系统用户没有任何关系)。用户名和口令以明文方式存放在 secrets file 参数指定的文件中。默认为匿名方式
* secrets file —指定一个 rsync 认证口令文件。只有在 auth users 被定义时,该文件才起作用。文件权限必须是 600
* strict modes —指定是否监测口令文件的权限。为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认为true


**模块访问控制参数**


* hosts allow —用一个主机列表指定哪些主机客户允许连接该模块。不匹配主机列表的主机将被拒绝。默认值为 \*
* hosts deny —用一个主机列表指定哪些主机客户不允许连接该模块


**模块日志参数**


* transfer logging —使 rsync 服务器将传输操作记录到传输日志文件。默认值为false
* log format —指定传输日志文件的字段。默认为:”%o %h [%a] %m (%u) %f %l” 设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“;


可以使用的日志格式定义符如下所示:


%o —操作类型:”send” 或 “recv”


%h —远程主机名


%a —远程IP地址


%m —模块名


%u —证的用户名(匿名时是 null)


%f —文件名


%l —文件长度字符数


%p —该次 rsync 会话的 PID


%P —模块路径


%t —当前时间


%b —实际传输的字节数


%c —当发送文件时,记录该文件的校验码


**3、服务端配置**



# vim /etc/rsyncd.conf --为 rsyncd 服务编辑配置文件,默认没有,需自己编辑


* uid = root —rsync运行权限为root
* gid = root —rsync运行权限为root
* use chroot = no —是否让进程离开工作目录
* max connections = 5 —最大并发连接数,0为不限制
* timeout = 600 —超时时间
* pid file = /var/run/rsyncd.pid —指定rsync的pid存放路径
* lockfile = /var/run/rsyncd.lock —指定rsync的锁文件存放路径
* log file = /var/log/rsyncd.log —指定rsync的日志存放路径
* [web1] —模块名称


path = /data/test/src —该模块存放文件的基础路径


ignore errors = yes —忽略一些无关的I/O错误


read only = no —客户端可以上传


write only = no —客户端可以下载


hosts allow = 192.168.22.12 —允许连接的客户端主机ip


hosts deny = —黑名单,表示任何主机


list = yes


auth users = web —认证此模块的用户名


secrets file = /etc/web.passwd —指定存放“用户名:密码”格式的文件



# mkdir /data/test/src --创建基础目录
# mkdir /data/test/src/george --再创建一个目录
# touch /data/test/src/{1,2,3}
# echo “web:123” > /etc/web.passwd --创建密码文件
# chmod 600 /etc/web.passwd
# service xinetd restart


### **四、测试**


**1、客户端**


环境:192.168.22.12



# yum -y install rsync
# mkdir /data/test


**2、小试参数**



rsync -avzP web@192.168.22.11::web1 /data/test/ --输入密码 123;将服务器 web1 模块里的文件同步至 /data/test,参数说明:


-a —参数,相当于-rlptgoD,


-r —是递归


-l —是链接文件,意思是拷贝链接文件


-i —列出 rsync 服务器中的文件


-p —表示保持文件原有权限


-t —保持文件原有时间


-g —保持文件原有用户组


-o —保持文件原有属主


-D —相当于块设备文件


-z —传输时压缩


-P —传输进度


-v —传输时的进度等信息,和-P有点关系



# rsync -avzP --delete web@192.168.22.11::web1 /data/test/ --让客户端与服务器保持完全一致, --delete
# rsync -avzP --delete /data/test/ web@192.168.22.11::web1 --上传客户端文件至服务端
# rsync -avzP --delete /data/test/ web@192.168.22.11::web1/george --上传客户端文件至服务端的 george 目录
# rsync -ir --password-file=/tmp/rsync.password web@192.168.22.11::web1 --递归列出服务端 web1 模块的文件
# rsync -avzP --exclude=“3” --password-file=/tmp/rsync.password web@192.168.22.11::web1 /data/test/ --同步除了路径以及文件名中包含 “3” *的所有文件

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值