rsync 查看服务器是否开启_9、Linux云计算系列CentOS6网络服务—Rsync
Linux第十九章实验报告实验1:ssh 协议数据同步: 将 NFS 服务器数据同步备份到 rsync 服务器:环境说明: 一台 NFS 服务器,一台 rsync 服务器;在两台服务器上分别创建目录(/filesrc、/filedst)下行同步(下载)格式:rsync -avz 服务器地址:/服务器目录/*/本地目录示例:rsync -avz root@192.16...
Linux第十九章实验报告
实验1:ssh 协议数据同步:
将 NFS 服务器数据同步备份到 rsync 服务器
:环境说明:
一台 NFS 服务器,一台 rsync 服务器;在两台服务器上分别创建目录(/filesrc、/filedst)
下行同步(下载)
格式:rsync -avz 服务器地址:/服务器目录/* /本地目录 示例:rsync -avz root@192.168.88.10:/filesrc/* /filedst -a:归档模式,递归并保留对象属性 -v:显示同步过程 -z:在传输文件时进行压缩 |
实例:
上行同步(上传)
格式:rsync -avz /本地目录/* 服务器地址:/服务器目录 示例:rsync -avz /filedst/* root@192.168.88.10:/filesrc |
实例:
注意:使用 root 用户进行实验可以,但生产环境中尽量使用单独创建的普通用户,减少权限溢出创建用来做数据同步的用户,并给予用户对目录的相应权限,一般使用 ACL 设置权限
# useradd zhangsan # passwd zhangsan # setfacl -m u:zhangsan:rwx /filesrc |
拓展:若要实现免密码数据同步,只需要双方做好 ssh 密钥对登录即可
ssh-keygen -t rsa -b 2048 ssh-copy-id root@192.168.113.120 |
实例:
步骤相同,ip不同
实验2:rsync 协议数据同步:
将 NFS 服务器数据同步备份到 rsync 服务器
环境说明:
一台服务器,一台客户端
1. 在两台服务器上分别创建目录(/filesrc、/filedst)
2. 搭建 rsync 服务(仅需要在 NFS 服务器上搭建即可)
3. 创建主配置文件(/etc/rsyncd.conf)
address = 192.168.113.110 port 873 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [web] comment = web directory path = /filesrc read only = no dont compress = *.gz *.bz2 auth users = user1 secrets file = /etc/rsyncd_users.db |
#rsync 服务绑定 IP #默认服务端口 873 #日志文件位置 #进程号文件位置 #共享名:用来连接是写在 url 上的,切记 #共享描述话语 #实际共享目录(如果报错就手敲) #是否仅允许读取 #哪些文件类型不进行压缩 #登录用户名(非系统用户,需要自行创建) #认证所需账户密码文件(需自行创建-同上) |
4. 创建认证所需账户密码文件
# vim /etc/rsyncd_users.db # user1:123456 # chmod 600 /etc/rsyncd_users.db #必须修改权限,否则登录报错 |
5. 启动服务
# rsync --daemon # netstat -antp | grep :873 |
6. 设置映射用户对共享目录有权限(r)
# setfacl -m u:nobody:rwx /firesrc/ |
注意:关闭服务可使用 kill 命令,但偶尔会造成服务被结束,但进程号配置文件不被删除的问题,若遇到此类问题可自己手动删除,再启动则正常(建议自己写一个 rsync 的服务管理脚本)
报错提示:
问题:@ERROR: chroot failedrsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6] 原因:服务器端的目录不存在或无权限。 |
解决方法:
创建目录并修正权限可解决问题;或者是修改(/etc/rsyncd.conf),可能是由于文件字符集错误导致。 |
下行同步(下载)
格式:rsync -avz rsync://用户名@服务器地址/共享模块名 /本地目录
示例: rsync -avz rsync://user1@192.168.113.110/web /filedst 拓展:--delete:删除本地比服务器多出来的文件(源地址没有,目标地址有的删掉) rsync -avz --delete rsync://user1@192.168.113.110/web /firedst/ |
实例:
上行同步(上传)
格式:rsync -avz /本地目录/* rsync://用户名@服务器地址/共享模块名
示例:
rsync -avz /filedst/* rsync://user1@192.168.88.10/web 拓展:rsync 协议的免密码可以借助一个环境变量实现 # export RSYNC_PASSWORD=虚拟用户密码(客户端生成) |
实例:
实验3:配置 unison+inotify 实现双向实时同步
rsync 在单向同步上支持的非常好,且效率很高,但是在双向同步支持较差;unison 则是双向同步的优秀工具,但其缺点是同步效率较低。
环境说明:
1. 准备好同步所需的两个目录
2. 如若用 root 来实现登录的话,生成密钥对,以便于免密码验证
3. 准备好 inotify 和 unison 的软件包
4. 解决依赖关系,gcc、gcc-c++
1. 安装步骤
1)先安装 inotify
# tar -xf inotify-tools-3.14.tar.gz # cd inotify-tools-3.14 # ./configure && make && make install |
2. 再安装 ocaml
# tar -xf ocaml-3.10.1.tar.gz # cd ocaml-3.10.1 # ./configure #忽略所有报错 # make world opt # make install |
3. 安装 unison
# tar -xf unison-2.13.16.tar.gz # cd unison-2.13.16 # make UISTYLE=text THREADS=true STATIC=true #已经存在 Makefile 文件,不需要./configure # cp unison /usr/local/bin/ #把生成的脚本拷贝出来 |
注意:同样的操作在服务器端也做一遍。
4. 配置脚本
注:双向自动同步,监控目录和数据同步时,源目录不能使用*通配符传输,否则会变成死循环。
filesrc 端:
#!/bin/bash a="inotifywait -mrq -e create,delete,modify /firesrc" b="/usr/local/bin/unison -batch /firesrc/ ssh://192.168.113.120//firedst/" #-batch:批处理 $a | while read directory event file do $b done |
filedst 端:
#!/bin/bash a="inotifywait -mrq -e create,delete,modify /firedst" b="/usr/local/bin/unison -batch /firedst/ ssh://192.168.113.110//firesrc/" #-batch:批处理 $a | while read directory event file do $b done |
5. 测试
将两个脚本放入后台执行:bash src.sh &
分别在两个主机上创建文件查看是否可以实现双向实时同步(可能会有延迟)
更多推荐
所有评论(0)