Rsync教程--linux服务器文件实时同步

发布时间:2024年01月13日

目录

一 、什么是rync ?

二、准备工作(linux-linux文件实时同步)

三、安装配置?Rsync服务端(linux)

四、安装Rsync客户端

五、客户端测试-使用Rsync服务将远端的backup目录拉取到当前目录

六、Rsync配置文件详解

七、Rsync常用命令

版权声明


一 、什么是rync ?

  1. rsync —— remote synchronize ,是一款实现远程同步功能的软件;

  2. rsync使用“Rsync算法”来同步文件,该算法只传送两个文件的不同部分,因此速度相当快;

  3. 同步文件的同时,可以保持原来文件的权限、时间和目录结构;

  4. 对于多个文件来说,内部流水线减少文件等待的延时;

  5. rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。同时要求必须在远程和和本地系统上都安装sync。

  6. 官网rsync.samba.org/

二、准备工作(linux-linux文件实时同步)

  1. 源文件地址(服务端):192.168.201.225?redhat

  2. 目标文件地址(客户端):192.168.201.226?redhat

  3. 请关闭防火墙:systemctl stop firewalld.service

  4. 查看防火墙状态:firewall-cmd --state

  5. 请将/etc/sysconfig/selinux/config文件中SELINUX的值为disable,修改后重启linux使修改生效,否则将影响文件同步

  6. 以下步骤达到的效果:服务端192.168.201.225??中进行同步的文件夹下的内容(/usr/backups/)同步复制到客户端192.168.201.226?中(/testrsync)。

  7. 操作系统信息如下:

  8. [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服务端(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.

  • Rsync安装,如未安装rsync,命令为:yum -y install rsync
yum -y install rsync
  • 配置rsync.conf文件(/etc/rsyncd.conf)
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
  • 服务端添加相关文件和目录

    1. 创建服务端备份路径并赋权,同conf配置文件中的path /usr/backups/

    2. 新增服务端密码文件 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服务

    1. 服务端守护进程模式启动。

[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

四、安装Rsync客户端

  • 检查有没有安装Rsync,默认已安装。
[root@localhost ~]# rsync
  • Rsync安装,如未安装rsync,命令为:yum -y install rsync
yum -y install rsync
  • 客户端添加密码文件并修改权限,与服务端密码文件是不同的,客户端只写密码,不写用户!

[root@localhost ~]# cat /etc/rsync.password 
Jtfund202309!#
[root@localhost ~]# chmod 600 /etc/rsync.password

五、客户端测试-使用Rsync服务将远端的backup目录拉取到当前目录

  1. 测试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
  1. 查看客户端的/testrsync目录是否有hello.txt文件

# cat /testrsync/123
#Rsync test
Hello World

六、Rsync配置文件详解

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 #模块在服务端的绝对路径

七、Rsync常用命令

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

文章来源:https://blog.csdn.net/weixin_41650969/article/details/135529518
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。