博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync 通过ssh同步以及服务同步
阅读量:5821 次
发布时间:2019-06-18

本文共 3323 字,大约阅读时间需要 11 分钟。

hot3.png

b322664c0e5e8e1060c70a3cb71c8a217fa.jpg

 

1、rsync 通过 ssh 方式同步

 

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

5ef59f808960488fbe42e9bba59ba476c1f.jpg

02机器见下图,

9d283958f3afc40eac2c0cd1e82ba79d224.jpg

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

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

53b833b2cc8a9128fb7bd109cbbce7f7747.jpg

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

536ca6395c18c3b0a1cf8fe80ab45dcc1c1.jpg

a68aad7725e037b531d02faebc9ab6b583f.jpg

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

4ba4d6e8d4e547f8b440097ad4c679ce7e9.jpg

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

371306401b0d5c13d971d168d0eeb64f3d4.jpg

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

8330cc2808ebba2f0e5cfeef9018db11464.jpg

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

8b399cafe7f34011662d32c2af14b90684d.jpg

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

fead6daa521a1078a0df6886e546828c043.jpg

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

 

2、rsync 通过服务同步

 

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

b7168cd9a6e39c3f48eff003581189dbcf4.jpg

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

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

见下图,

8a78e08474c71003bd09312e443b22177b8.jpg

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

70055f7e1cb387af4cb52cc59633bd01e79.jpg

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

67933e983013fd5b96ede4eded58cd49c69.jpg

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

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

caf6fa25044ae6b02497bcd3021617d99c0.jpg

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

b5087e44984b4558df7e565dea6bcff98e8.jpg

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

4f2e76d0fcc65ff50cc04174271edc101d5.jpg

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

780d0af34f7ea719006cc0763e027e36864.jpg

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

L,回车,见下图,

9d6e1466d12a87f249ef0f0cf2857c5e91a.jpg

ce4f36e734012a480cfa55a62b732835cc5.jpg

0eaa22b278a9398dd68c437aed0c592badd.jpg

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

bab6dac93823a00b251e8762e552ba56264.jpg

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

377332b2fef1fcd599e4cc48a7aaacf23ab.jpg

1f23efff808a3a792e556b300c430e6c24d.jpg

639a9a68dcc84aaac97d694773815137184.jpg

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

e1df4dfed8bbcbbeed435ad2efba03b475f.jpg

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

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

04fcbde267ddd3e54b4f191cb07f307f3b1.jpg

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

83ce9218590b8020c50815a82725b04aad3.jpg

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

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

a6dca17c55e02c814cfad631115d6f11b50.jpg

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

bd977483541939545f5cc2813ab14bfbe07.jpg

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

675534972928fcd50f1305bf701a75b5f56.jpg

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

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

330e50a255bb5940a873aee832e7de32c2a.jpg

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

abdfb8fdc559df357d5ee376fc99e6b3a8b.jpg

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

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

c5b15e77d1efae5a6c38161f8d30a2cc13c.jpg

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

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

f99bb39bdace80711b99d0c4ab28fbfc86f.jpg

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

fdbeb366f1d5de06b1dfca9dcc0acd1ab9a.jpg

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

eedfde6cf19bbb112201c530d7f396f2139.jpg

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

1c0d02f58977895d7b0e65bf02fed6a47cc.jpg

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

e4f5a9d7ec7a165ce73ea126d378cdf8efc.jpg

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

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

45956c7e7ee3fe2a90f031bda24f6416d15.jpg

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

6cae65f8461e85f3fb2813b3b9d658b266a.jpg

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

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

38ee6b4f3242c4be0ec500addc60f926f43.jpg

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

9350159014971c57e545e82a83f3d33c2d3.jpg

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

617652ba51a42c463ec047cd55b92a31613.jpg

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

3f130c62e2ffb83c878754778c8953d6f40.jpg

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

1cfa07fe200ec381fa97655cc4d2dcb3005.jpg

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

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

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

你可能感兴趣的文章
2018天猫双11各类目品牌成交额top10排行榜
查看>>
Php导出百万数据的优化
查看>>
【年终总结】微信前端社招有感
查看>>
(C#)Windows Shell 外壳编程系列6 - 执行
查看>>
boost多边形交集、并集
查看>>
ifconfig
查看>>
理解字符编码
查看>>
List of colors
查看>>
POS打印机一些特殊控制
查看>>
datasnap生命期LifeCycle
查看>>
TCPDUMP Command Examples
查看>>
Redis3.2+Tomcat实现集群的Session管理 -- tomcat-redis-session-manager的编译和开发部署环境搭建...
查看>>
数据集和JSON相互转换
查看>>
Without you I am NOTHING
查看>>
深入浅出话VC++(1)——Windows程序内部运行机制
查看>>
BAT等互联网公司薪资分享
查看>>
Eclipse插件开发(原书第3版)
查看>>
街头智慧:罗杰斯的投资与人生
查看>>
《社会化产品经理:社会化商业时代的产品管理与设计》
查看>>
Ionic 简单操作
查看>>