rsync 通过ssh同步以及服务同步

rsync 通过ssh同步以及服务同步

 

1、rsync 通过 ssh 方式同步

 

现在打开两个PuTTY窗口,001机器的见下图,

rsync 通过ssh同步以及服务同步

02机器见下图,

rsync 通过ssh同步以及服务同步

两个的IP地址是不一样的,001机器的IP地址是 192.168.218.128,02机器的IP地址是 192.168.218.130。

现在在001机器上操作,见下图,

rsync 通过ssh同步以及服务同步

显示未找到命令,默认系统中是没有rsync命令,现在需要在02机器上安装rsync命令,输入命令 yum install -y rsync,回车,见下图,

rsync 通过ssh同步以及服务同步

rsync 通过ssh同步以及服务同步

接着回到001机器,重新操作,通过ssh同步,输入命令 rsync -av /etc/passwd 192.168.218.130:/tmp/lys.txt ,回车,见下图,

rsync 通过ssh同步以及服务同步

可以看到文件同步的过程。接着来查看一下文件,输入命令 cat /tmp/lys.txt 回车,见下图,

rsync 通过ssh同步以及服务同步

也可以反过来操作,输入命令 rsync -avP 192.168.218.130:/tmp/lys.txt /tmp/123.txt,回车,见下图,

rsync 通过ssh同步以及服务同步

以上操作叫拉文件,再上面的操作叫推文件。两个操作都需要输入密码,并且都知道端口是 22,如果不知道对方的端口的话,就需要指定端口,加上-e选项,输入命令 rsync -avP -e "ssh -p 22" /etc/passwd 192.168.218.130:/tmp/lys.txt ,回车,见下图,

rsync 通过ssh同步以及服务同步

指定 22 端口,就会连上对方的 22 端口。注意 -e 后面的“ssh -p 22”是一个命令,这个命令可以单独操作的 ,输入命令 ssh -p 22 192.168.218.130,回车,见下图,

rsync 通过ssh同步以及服务同步

可以发现,输入密码之后,就连接上02机器了,接着按住 ctrl+d 登出。

 

2、rsync 通过服务同步

 

这边需要先开启服务,编辑配置文件,输入命令 vi  /etc/rsyncd.conf,回车,见下图,

rsync 通过ssh同步以及服务同步

默认是有内容的,但前面都有一个#号,被注释掉了。现在直接另起一行,将下面的内容复制粘贴上去,再保存并退出即可。

port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

address=192.168.218.128

[test]

path=/tmp/rsync

use chroot=true

max connections=4

read only=no

list=true

uid=root

gid=root

auth user=test

secrets file=/etc/rsyncd.passwd

hosts allow=192.168.218.130

见下图,

rsync 通过ssh同步以及服务同步

稍后再解释上面内容的含义,先接着往下操作,启动服务,输入命令 rsync--daemon,回车,见下图,

rsync 通过ssh同步以及服务同步

接着使用命令 ps aux |grep  rsync,来检测一下服务是否启动,见下图,

rsync 通过ssh同步以及服务同步

可以看到服务启动了,接着使用命令 netstat -lntp 查看服务端口,如上图第三个红色框框内容所示。

接着创建文件 /tmp/rsync,并授权 777,方便我们测试,见下图,

rsync 通过ssh同步以及服务同步

然后先在02机器上,同步一个文件,输入命令 rsync -avP /tmp/lys.txt  192.168.218.128::test/lys-02.txt,回车,见下图,

rsync 通过ssh同步以及服务同步

出现报错,先检测网络,发现没有问题,接着检查端口,未找到命令,输入命令 yum install -y telnet,回车,安装命令,见下图,

rsync 通过ssh同步以及服务同步

telnet 192.168.218.128 873,命令是检测端口是否接通,见下图,

rsync 通过ssh同步以及服务同步

结果显示,端口是不通的,这时候需要检查一下是否是 iptables 的问题,输入命令 iptables -v

L,回车,见下图,

rsync 通过ssh同步以及服务同步

rsync 通过ssh同步以及服务同步

rsync 通过ssh同步以及服务同步

可以看出,就是 iptables 的问题,要把 firewalld 服务停止,见下图,

rsync 通过ssh同步以及服务同步

可以看到,iptables 上的规则没有了,001机器上也要检查一下,见下图,

rsync 通过ssh同步以及服务同步

rsync 通过ssh同步以及服务同步

rsync 通过ssh同步以及服务同步

001机器上的 firewalld 服务也关闭掉了。然后回到02机器,输入命令 telnet 192.168.218.128 873,回车,见下图,

rsync 通过ssh同步以及服务同步

这样子就是没问题的,退出输入 telnet> quit 或是直接回车,就可以退出来。

接着运行刚才的命令 rsync -avP /tmp/lys.txt  192.168.218.128::test/lys-02.txt,回车,见下图,

rsync 通过ssh同步以及服务同步

这样显示就是成功了。命令中含有两个冒号 :: 的,就是使用 rsyncd.conf 。接着在001机器上检查一下,见下图,

rsync 通过ssh同步以及服务同步

可以看到 lys-02.txt 这个文件,说明同步成功了。

回到02机器上,再把这个文件拉回来,也是可以的,见下图,

rsync 通过ssh同步以及服务同步

接下来,输入命令 cat /etc/rsyncd.conf,回车,查看配置文件,见下图,

rsync 通过ssh同步以及服务同步

上图红色框框的内容,具体含义见下图,

rsync 通过ssh同步以及服务同步

port 默认端口是873,也可以更改,直接在配置文件里面更改即可。

现在来更改一下端口为8730,先进入配置文件,输入命令 vim /etc/rsyncd.conf,回车,见下图,

rsync 通过ssh同步以及服务同步

更改上面红色框框的内容,保存并退出。接着往下操作,

rsync 通过ssh同步以及服务同步

更改配置文件之后,还要重新启动服务,才可以生效,然后看到端口更改成功了。

接着去02机器,同步目录,见下图,

rsync 通过ssh同步以及服务同步

一开始同步的时候,报错了,因为8730端口没有开放。指定端口后,才可以同步目录。

日志文件,输入命令 cat /var/log/rsync.log,回车见入查看,见下图,

rsync 通过ssh同步以及服务同步

“use chroot” 默认为true,如果是true,同步的文件中如果有软连接,则会有问题,无法实现同步。这时候更改配置文件里的  use chroot 为 false 的话,软链接同步就可以实现了。

rsync 通过ssh同步以及服务同步

现在看看 list 为 ture 的时候,输入命令 rsync --port=8730 192.168.218.128::,回车,见下图,

rsync 通过ssh同步以及服务同步

后面不跟模块名的时候,会自动列出模块名。然后更改 list 为 false,输入命令 vi /etc/rsyncd.conf,进入下图,

rsync 通过ssh同步以及服务同步

保存并退出,再来看一下刚才的命令,见下图,

rsync 通过ssh同步以及服务同步

list 改为 false 的时候,就不会有结果出现。

接着来看看 uid 和 gid,在001机器上,原本设置的全部是 root,具体操作见下图,

rsync 通过ssh同步以及服务同步

查看目录 /tmp/rsync/ 下的文件权限都是 root,先把这些文件都删除掉,再重新定义 uid 和 gid,通过命令 vim /etc/rsyncd.conf,见下图,

rsync 通过ssh同步以及服务同步

nobody 是权限很小的一个用户。

现在回到02机器上同步一下,见下图,

rsync 通过ssh同步以及服务同步

可以看到结果的第三行,显示 Operation not permitted,意思为权限不够,所以不能完成同步。所以还要把001机器上的 uid 和 gid 改为 root,这边不显示过程了。然后再回到02机器上同步操作,就可以执行了,见下图,

rsync 通过ssh同步以及服务同步

传输过程指定用户名 auth users 和密码文件 secrets file,输入命令 vim /etc/rsyncd.passwd,回车,见下图,

rsync 通过ssh同步以及服务同步

输入密码,格式见上图。保存并退出,还要更改文件的权限为600,见下图,

rsync 通过ssh同步以及服务同步

接着回到02机器,同步目录的时候就需要输入用户名和密码了。还有一种方法,在02机器上保存密码文件,传输的时候就不必输密码了,具体操作见下图,输入命令 vi /etc/rsync_pass.txt,回车,

rsync 通过ssh同步以及服务同步

这边和001机器上的操作不一样,这边直接输入密码,保存并退出即可。文件的权限也要改为600,接着同步服务的时候,输入命令 rsync -avP /tmp/test/ --port=8730 --password-file=/etc/rsync_pass.txt [email protected]::test/,回车,见下图,

这样同步的时候就不用输密码了。

转载于:https://my.oschina.net/u/3867265/blog/1857892