rsync 服务方式连接

rsync扩展 :

通过后台服务的方式:

在远程主机上建立一个rsync服务器,将本机作为rsync的客户端。(通常的表现方式为在后面添加 :: )

rsync 通过服务的方式同步:

要编辑配置文件/etc/rsyncd.conf 启动服务rsync –daemon 格式:rsync -av test1/ 192.168.133.130::module/dir/

(1.)编辑配置文件– # vim /etc/rsyncd.conf 由于centos 7 默认对配置文件全部都是注释掉的,最简单的方式我们在最后另起一行;输入咱们的策略进行编辑:

rsyncd.conf样例:
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130
[test]
path=/tmp/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.133.132 1.1.1.1 2.2.2.2  192.168.133.0/24

# cat /var/log/rsync.log //查看日志
# mkdir /tmp/rsync //创建一个目录匹配咱们创建的[test]模块名
# chmod 777 /tmp/rysnc //为了测试方便,暂时先给777,工作当中咱们需要看具体的情况。
# rsync –daemon //然后我们启动一下服务
# ps aux | grep rsync //检查一下是否有此服务
# netstat -lntp //检查服务是否启动 -t:列出 TCP 协议的连接
[[email protected] ~]# rsync -avP /tmp/asd.ipt 192.168.159.129::test/asdbak.ipt 
rsync: failed to connect to 192.168.159.129 (192.168.159.129): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]

当我们测试时,发现了如上错误↑

  • 首先我们先检查网络是否可以ping通。
  • telnet一下服务器的IP地址

我们发现网络是通的,但是没有路由↓

[[email protected]02 ~]# telnet 192.168.159.129 873
Trying 192.168.159.129...
telnet: connect to address 192.168.159.129: No route to host

其原因就是因为firewall阻挡了我们。两端都需停掉firewall服务:(# systemctl stop firewalld)


rsyncd.conf配置文件详解 :

port:指定在哪个端口启动rsyncd服务,默认是873端口。

# vim /etc/rsyncd.conf 把端口更改为8730,
# killall rsync //杀死所有rsync相关的服务
# ps aux | grep rsync
# netstat -lntp //查看端口已经改成8730

然后我们需要添加 –port 8730

[[email protected]02 ~]# rsync -avPL --port 8730 192.168.159.129::test/ /tmp/test/
receiving incremental file list
symlink has no referent: "/123.txt" (in test)
./

sent 29 bytes  received 131 bytes  320.00 bytes/sec
total size is 4868  speedup is 30.43
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [generator=3.0.9]

log file:指定日志文件。

pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。

address:指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动。

[]:指定模块名,里面内容自定义。


path:指定数据存放的路径。 一旦我们制定了目录,例如我们创建一个超链接/etc/passwd .如果我们在同步的时候 -L就会出现问题!我们可以查看日志,查看具体错误信息!

[[email protected]02 ~]# rsync -avPL 192.168.159.129::test/ /tmp/test/
receiving incremental file list
symlink has no referent: "/123.txt" (in test)

sent 26 bytes  received 128 bytes  102.67 bytes/sec
total size is 4868  speedup is 31.61
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [generator=3.0.9]

当我们把下面设置成false,即可解决↓

use chroot true|false:表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议设置成false。


max connections:指定最大的连接数,默认是0,即没有限制。

read only ture|false:如果为true,则不能上传到该模块指定的路径下。

list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。

列出远程服务端的list:
[[email protected]02 ~]# rsync --port 8730 192.168.159.129::
test

如果改成false,我们就不可以查看服务器中的list。(安全选项,如果可见的,没有限制IP,黑客就可以直接列出来,然后在你模块里面写数据,导入木马等)


uid/gid:指定传输文件时以哪个用户/组的身份传输。

如果把uid=nobody;gid=nobody;我们则会没有任何权限去上传和下载:

[[email protected]02 ~]# rsync -avPL --port 8730 /tmp/test/  192.168.159.129::test/ 
sending incremental file list
123.txt
        1296 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1/3)

sent 1400 bytes  received 27 bytes  2854.00 bytes/sec
total size is 6164  speedup is 4.32
[[email protected]02 ~]# rsync -avP --port 8730 /tmp/test/  192.168.159.129::test/ 
sending incremental file list
./
rsync: failed to set times on "/." (in test): Operation not permitted (1)

auth users:指定传输时要使用的用户名。

# vim /etc/rsyncd.passwd 写入 test:asd9577 用户名+密码
# chmod /etc/rsyncd.passwd

如下↓:

[[email protected]02 ~]# rsync -avP --port 8730 /tmp/test/  [email protected]192.168.159.129::test/ 
Password: 
sending incremental file list
./

sent 83 bytes  received 14 bytes  27.71 bytes/sec
total size is 4879  speedup is 50.30

secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。格式:用户名:密码

有时候我们同步一些文件几乎都是使用脚本在凌晨完成的动作,如果需要我们输入密码肯定不行的,所以我们需要在客户端也要创建一个密码文件与之匹配!

# vim /etc/rsync_pass.txt 只需要增加密码即可 ASD9577
# chmod 600 /etc/rsync_pass.txt

这样就算不输入密码也是可以的!!

[[email protected]02 ~]# rsync -avP --port 8730 /tmp/test/ --password-file=/etc/rsync_pass.txt  [email protected]192.168.159.129::test/ 
sending incremental file list

sent 77 bytes  received 8 bytes  170.00 bytes/sec
total size is 4879  speedup is 57.40

hosts allow:表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。

hosts allow=192.168.159.130  1.1.1.1 2.2.2.2  192.168.159.0/24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从GITLAB误删除数据库想到的

    昨天,Gitlab.com发生了一个大事,某同学误删了数据库,这个事看似是个低级错误,不过,因为Gitlab把整个过程的细节都全部暴露出来了,所以,可以看到很...

    顶级程序员
  • 航空公司客户价值分析

    项目目标 借助航空公司客户数据,对客户进行分类 对不同的客户类别进行特征分析,比较不同类别客户的客户价值 对不同价值的客户类别提供个性化服务,制定相应的营销策略...

    林清猫耳
  • Linux上安装MySql

    准备安装环境 CentOS6.7 Final MySQL-5.5.48-1.linux2.6.x86_64.rpm-bundle.tar 上传MySQL安装包到...

    sparkle123
  • Spring(5)——Spring 和数据库编程

    传统 JDBC 回顾 JDBC 我们一定不陌生,刚开始学习的时候,我们写过很多很多重复的模板代码: public Student getOne(int id) ...

    我没有三颗心脏
  • 人类对机器人有了感情怎么办?

    近来,美国一家公司生产的超仿真机器人Sophia在电视节目上与人类对答如流,成为“网红”机器人。对话中,Sophia流露出的喜悦、惊奇、厌恶等表情真实得令人赞叹...

    机器人网
  • SparkSQL操作外部数据源

    parquet数据 hive表数据 mysql表数据 hive与mysql结合 1.处理parquet数据 启动spark-shell: spark-shel...

    sparkle123
  • 优化SQL查询:如何写出高性能SQL语句

    1、 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语...

    顶级程序员
  • dubbo请求处理线程模型实现分析

    问题的由来: 如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识, 则直接在 IO 线程上处理更快,因为减少了线程池调度。 ...

    wannshan
  • Day24访问数据库

    使用SQLite SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在i...

    林清猫耳
  • 技术 | 苹果最新博文剑指汉字手写识别!专家回应:并没有技术含量

    参与 | 鸽子,Shawn 今日,苹果再次更新其博客,这次的内容主打手写识别,而且是对汉字的手写识别。是不是挺好奇的,先来看看这篇论文的简介: 对由30000...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券