目录
五、客户端测试-使用Rsync服务将远端的backup目录拉取到当前目录
rsync —— remote synchronize ,是一款实现远程同步功能的软件;
rsync使用“Rsync算法”来同步文件,该算法只传送两个文件的不同部分,因此速度相当快;
同步文件的同时,可以保持原来文件的权限、时间和目录结构;
对于多个文件来说,内部流水线减少文件等待的延时;
rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。同时要求必须在远程和和本地系统上都安装sync。
源文件地址(服务端):192.168.201.225?redhat
目标文件地址(客户端):192.168.201.226?redhat
请关闭防火墙:systemctl stop firewalld.service
查看防火墙状态:firewall-cmd --state
请将/etc/sysconfig/selinux/config文件中SELINUX的值为disable,修改后重启linux使修改生效,否则将影响文件同步
以下步骤达到的效果:服务端192.168.201.225??中进行同步的文件夹下的内容(/usr/backups/)同步复制到客户端192.168.201.226?中(/testrsync)。
操作系统信息如下:
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
检查有没有安装Rsync,默认已安装(该命令会详细展示参数信息,详见附录1:rsync参数
[root@localhost ~]# rsync
rsync version 3.1.2 protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, prealloc
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
yum -y install rsync
uid = root
gid = root
#端口
port = 873
# 如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是一般不需要,选择no或false
use chroot = yes
read only = on
#不允许列清单
list = no
#最大连接数
max connections = 4
#pid文件的存放位置
#pidfile = /var/run/rsyncd.pid
#锁文件的存放位置
#lock file=/var/run/rsyncd.lock
#日志文件的存放位置
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd/rsyncd.motd
# //此文件定义完成后系统会自动创建
exclude = lost+found/
transfer logging = yes
#覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。
timeout = 900
ignore nonreadable = yes
# //同步时跳过没有权限的目录
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# //传输时不压缩的文件
#哪些电脑可以访问rsync服务,这里可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开
#hosts allow = 192.168.100.114
#哪些电脑不可以访问rsync服务
#hosts deny = 172.25.0.0/24
#这里是认证模块名,即跟samba语法一样,是对外公布的名字
[backup]
comment = this is module for backup
#这里是参与同步的目录
path = /usr/backups/
#可以忽略一些无关的IO错误
ignore errors
#允许可读可写
read only = no
#认证的用户名
auth users = root
#密码文件存放地址
secrets file = /etc/rsyncd.password
服务端添加相关文件和目录
创建服务端备份路径并赋权,同conf配置文件中的path /usr/backups/
新增服务端密码文件 rsync.password,内容为 用户名:密码
[root@localhost ~]# mkdir /usr/backups/
[root@localhost ~]# chown -R root:root /usr/backups/
[root@localhost ~]# cat /etc/rsync.password
root:Jtfund202309!#
[root@localhost ~]# chmod 600 /etc/rsync.password
启动Rsync服务
服务端守护进程模式启动。
[root@localhost ~]# rsync --daemon
查看服务是否启动正常-查看873端口是否打开
[root@localhost ~]# netstat -lntup |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 18101/rsync
tcp6 0 0 :::873 :::* LISTEN 18101/rsync
[root@localhost ~]# ps -ef |grep rsync |grep -v grep
root 18101 1 0 1月10 ? 00:00:00 /usr/bin/rsync --daemon
[root@localhost ~]# rsync
yum -y install rsync
客户端添加密码文件并修改权限,与服务端密码文件是不同的,客户端只写密码,不写用户!
[root@localhost ~]# cat /etc/rsync.password
Jtfund202309!#
[root@localhost ~]# chmod 600 /etc/rsync.password
测试Rsync服务
[root@localhost ~]# rsync -avzP root@192.168.201.225::backup /testrsync --password-file=/etc/rsync.password
receiving incremental file list
sent 24 bytes received 68 bytes 184.00 bytes/sec
total size is 4 speedup is 0.04
查看客户端的/testrsync目录是否有hello.txt文件
# cat /testrsync/123
#Rsync test
Hello World
uid = rsync #rsync使用的用户,默认nobody
gid = rsync #rsync使用的gid 默认nobody
use chroot = no #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为
#true就限定为模块默认目录,通常都在内网使用rsync所以不配也可以
max connections = 200 #设置最大连接数timeout = 300 #超时时间 建议300-600
pid file = /var/run/rsyncd.pid #pid文件位置
lock file = /var/run/rsync.lock #指定lock文件用来支持“max connections ”参数使总连接不会超过限制
log file = /var/log/rsyncd.log #日志文件路径
ignore errors #忽略io错误
read only = false #指定客户端是否可以上传文件,默认
truelist = false #是否允许客户端查看可用模块
hosts allow = 192.168.253.0/24 #允许连接的ip段或个别ip,默认任何人都可以连接
hosts deny = 0.0.0.0/32 #不允许连接的IP段或个别ip
auth users = rsync_backup #指定以空格或逗号分隔用户,他们可以使用这个模块,用户不需要再本
#系统存在,默认所有用户都可以无密码登录
secrets file = /etc/rsync.password #指定用户名和密码文件 格式: 用户名:密码 密码不超过8位
#这个是密码文件 全线最好是600
[backup] comment = "this is a comment" #此参数指定在客户端获取可用模块列表时显示在模块名称旁边的描述字
##符串,默认没有这个参数
path = /backup #模块在服务端的绝对路径
Local: rsync [OPTION...] SRC... [DEST] =====>本地的推送格式
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
常用的选项
-v 详细模式输出 传输时候显示进度等信息
-z 传输时进行压缩提高传输速率 --compuress-level=num 可以按级别压缩
-r 对子目录以递归模式,即目录下的所有目录都同样传输
-t 保持文件时间信息
-o 保持文件属性信息
-g 保持稳健属组信息
-a 归档模式 相当于 rtopg
-P 显示同步过程及传输时进度信息
-e 使用信道协议 指定替代rsh 的shell程序 如ssh
--exclude=PATTERN 指定排除不需要传输的文件 支持*来代替任意字符
-D 保持设备文件信息
-l 保留软连接
常用的选项为 avz
常见用法
将当前目录的hello.txt推送到服务端的backup模块
rsync -avz -P hello.txt rsync_backup@192.168.253.153::backup --password-file=/etc/rsync_passwd
或者
rsync -avz -P hello.txt rsync://rsync_backup@192.168.253.153:/backup --password-file=/etc/rsync_passwd
将远端的backup目录拉取到当前目录
rsync -avz -P rsync://rsync_backup@192.168.253.153:/backup ./ --password-file=/etc/rsync_passwd
或者
rsync -avz -P rsync_backup@192.168.253.153::backup ./ --password-file=/etc/rsync_passwd
也可以利用ssh
版权声明:
本文参考了CSDN博主「十五十六」的原创文章, 原文链接:https://blog.csdn.net/L835311324/article/details/80501105
本文参考了CSDN博主「萧萧云星」的原创文章, 原文链接:
https://blog.csdn.net/XiaoXiaoYunXing/article/details/120160395
本文参考了CSDN博主「永夜Evernight」的原创文章, 原文链接:
https://blog.csdn.net/qq_38766930/article/details/123641213