rsync工具使用及服务部署介绍
  TEZNKK3IfmPf 2023年11月14日 23 0

前言

rsync(remote sync 远程同步)是 Linux 系统下常用的备份工具。rsync不仅可以远程同步数据(类似于scp),而且可以本地同步数据(类似于cp)。

但不同于cp或scp的一点是,它不会覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。

安装rsync

# yum install -y rsync

rsync 常用的命令语法格式

  • rsync [option] source destination

  • rsync [option] source [user@]host:destination //默认是root

  • rsync [option] [user@]host:source destination //从远程目录同步数据到本地

  • rsync [option] [user@]host::source destination

  • rsync [option] source [user@]host::destination

rsync 常用选项

rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。

rsync 使用

(1)本地备份/复制,如:将 /etc/passwd 文件拷贝到/tmp为1.txt

rsync -av /etc/passwd /tmp/1.txt

  • a参数中包含很多选项,后面详细介绍;

  • v参数表示可视化过程,如:查看到发送了多少字节、多少字节每秒、文件一共有多大,速度是多少等;

(2)远程备份/复制

格式:用户名@IP:path,如:root@192.168.112.136:/root

举例:rsync -av /etc/passwd root@192.168.112.136:/tmp/1.txt

注意⚠️:远程主机也必须安装rsync!

(3)假如对方的机器端口不是22

这里有两种方法:

  • -e "ssh -p 22",其中 “ssh -p 22” 是一个命令,可以直接连接对方机器;

  • --rsh=ssh -p 22也可以指定端口

rsync 服务器部署

这种方式可以理解为:在远程主机上建立一个 rsync 服务器,在服务器上配置好 rsync 的各种应用,然后将本机作为 rsync 的一个客户端连接远程 rsync 服务器,具体步骤如下:

(1)编辑配置文件:/etc/rsyncd.conf

cat >>/etc/rsyncd.conf <<EOF

port = 873
log file = /var/log/rsync.log
pid file = /var/run/rsyncd.pid
address = 192.168.246.180
[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.246.176

(2)启动 rsync 服务

# rsync --daemon

(3)建立试验目录,并给予 777 权限

# mkdir /tmp/rsync

# chmod 777 /tmp/rsync

(4)检测端口是否通畅

在另外一台服务器上执行:[root@localhost ~]# telnet 192.168.246.180 873

说明⚠️:

  • 关闭系统selinux;

  • 关闭系统 firewalldsystemctl stop firewalld

(5)在 root@localhost 这个客户机上给 rsync 服务器写文件

# rsync -avP /root/test.py 192.168.246.180::test/test.py

Password: 
@ERROR: auth failed on module test
rsync error: error starting client-server protocol (code 5) at main.c(1516) [sender=3.0.9]

修改配置文件/etc/rsyncd.conf:

#auth users = test
#secrets file = /etc/rsyncd.passwd

再次传输,此时不需要密码:

(6)查看传输结果

# ll /tmp/rsync/

/etc/rsyncd.conf配置文件详解

use chroot = true|false 当有软连接,需要给其定义为false

(1)在服务端,建立一个软连接

ln -s /etc/passwd 12.txt,具体步骤:

(2)修改配置文件/etc/rsyncd.conf

use chroot = ture 更改为 false

(3)在客户端上,开始同步test模块

[root@localhost test]# rsync -avLP 192.168.246.180::test/ /tmp/test/

说明:客户机上 test 目录可以不用事先创建~

(4)查看文件 12.txt 文件内容

[root@localhost test]# cat /tmp/test/12.txt |head

max_connections:指定最大的连接数,默认为0

max connections = 4我们配置文件中设置为4

read only = ture|false

如果为 true,则不能上传到该模块指定的路径下

read only = no如果为true,则不能给服务端写数据

list:该模块是否被列出,设定为 true则列出,false则隐藏(--port 8730 指定端口)

配置文件为:list=true

更改配置文件为:list=false

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

配置文件为:uid = root gid = root

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

secrets file:指定密码文件

(1)修改服务端 /etc/rsyncd.conf 配置文件,更改如下:

auth users = test
secrets file = /etc/rsyncd.passwd

(2)在rsync服务器上新建 rsyncd.passwd 文件。并且设置600权限;

[root@mysql-nginx ~]# vim /etc/rsyncd.passwd
test:wtf  //书写格式,用户名:密码

[root@mysql-nginx ~]# chmod 600 !$

(3)在客户端,同步test目录:此时不需要输入密码

# rsync -avP /tmp/test --port=873 test@192.168.246.180::test/

(4)在客户端,设置密码文件

# vim /etc/rsync_pass.txt //在文本里面只输入 密码
wtf
# chmod 600 !$
chmod 600 /etc/rsync_pass.txt

# rsync -avP /tmp/test --port=873 --password-file=/etc/rsync_pass.txt test@192.168.246.180::test/

# touch /tmp/test/3.txt  //新建一个文件

# rsync -avP /tmp/test --port=873 --password-file=/etc/rsync_pass.txt test@192.168.246.180::test/

hosts allow = IP 定义哪个IP连接它

hosts allow = 192.168.246.172  1.1.1.1 192.168.236.89 192.168.246.0/24  //指定多个IP,也可以指定Ip段,用空格隔开
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月12日   21   0   0 服务
  TEZNKK3IfmPf   2023年11月13日   25   0   0 服务
  TEZNKK3IfmPf   2023年11月13日   43   0   0 windows服务
  TEZNKK3IfmPf   2023年11月12日   25   0   0 spring服务
  TEZNKK3IfmPf   2023年11月12日   29   0   0 服务Web
TEZNKK3IfmPf