ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

    • Linux基础

    • Linux服务

      • Rsync文件传输
        • 介绍
        • 服务搭建
          • Rsync服务方式客户端配置
        • 数据传输过程
        • 常用参数
        • 应用技巧
        • 常见错误
      • Sersync实时同步
      • NFS文件服务
      • SSH远程连接
      • Keepalived高可用
      • Supervospr进程管理
      • APT包管理工具
      • Samba文件共享
      • JumpServer堡垒机
      • Linux搭建DNS服务
      • Tmux终端管理
      • Iptables
      • Firewalld防火墙管理
      • OpenVPN代理
      • 本地yum仓库搭建
    • Windows Server笔记

    • Shell笔记

    • Ansible笔记

  • 虚拟化服务

  • 数据库服务

  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 操作系统
  • Linux服务
Hoshinozora
2024-03-09
目录

Rsync文件传输

# 介绍

Rsync(Remote Sync)是一个快速、灵活、稳定的文件同步和传输工具,适用于各种场景,包括备份、数据同步、远程文件共享等。

以下是Rsync服务的一些关键特性和用法:

  1. 快速传输:Rsync采用差异传输算法,只传输文件的变化部分,而不需要每次都传输整个文件,因此可以大大提高传输效率。
  2. 远程同步:Rsync可以通过SSH等安全协议进行加密的远程同步,确保数据传输的安全性。
  3. 保持文件属性:Rsync可以保持文件的权限、时间戳等属性,确保在同步过程中文件的完整性和一致性。
  4. 灵活的过滤规则:可以使用通配符或正则表达式指定需要同步的文件或目录,也可以排除不需要同步的文件或目录,从而实现灵活的同步策略。
  5. 增量备份:通过Rsync的差异传输算法,可以实现增量备份,只传输已更改的文件部分,从而节省存储空间和带宽。
  6. 支持部分文件同步:Rsync支持在文件级别进行同步,可以部分同步大文件,而不需要重新传输整个文件。
  7. 轻量级和易于使用:Rsync是一个轻量级的命令行工具,易于安装和使用,适用于各种操作系统和环境。

我们可以服务方式启动Rsync,可以在一台计算机上安装Rsync软件,并配置Rsync服务的设置,如同步目录、账号密码文件路径、监听端口等。

也可以直接作为SSH文件传输工具进行使用,这种方式不需要进行配置,直接即可使用。

# 服务搭建

# 1.先确认rsync是否安装

rpm -qa rsy*
1

# 2.编写配置文件

我们可以通过"man rsyncd.conf"命令查看配置文件的配置方法。

配置文件路径:/etc/rsyncd.conf

配置参数:

# 指定管理备份目录的用户
uid = rsync 
# 指定管理备份目录的用户组
gid = rsync
# 定义rsync备份服务的网络端口号
port = 873
# 传输时是否将当前用户伪装成超级用户进行传输
fake super = yes
# 和安全相关的配置
use chroot = no
# 客户端最大同时连接数
max connections = 200
# 超时时间,单位秒,超过将被断开连接,也就是客户端连接空闲最大时间(没有数据传输)
timeout = 300
# 服务启动时,记录服务进程PID到指定文件,可用于快速关闭服务进程,或判断服务是否运行
pid file = /var/run/rsyncd.pid
# 锁文件,用于到达最大连接数时,禁止更多的连接
lock file = /var/run/rsyncd.lock
# 运行日志文件
log file = /var/log/rsyncd.log

# 是否暂时忽略传输中的简单错误,配置之后,出了小问题,可以等传完之后在处理
# 比如传到一半有一些小文件出问题没有传输成功,如果不配置该文件就会停止传输
ignore errors = yes
# 指定备份目录是否只读
read only = false
# 是否允许客户端查看所有的模块信息,站在安全的角度尽量不要开启,避免其他人知道模块名
# 开启后客户端可以通过"rsync rsync_backup@10.0.0.41::"命令查看所有模块信息
list = false
# 白名单,允许传输备份数据的主机或网段
hosts allow = 172.16.1.0/24
# 黑名单,禁止传输数据备份的主机或网段
hosts deny = 0.0.0.0/32
# 指定用于认证的用户
auth users = rsync_backup
# 指定认证用户的密码文件
secrets file = /etc/rsync.password
# 模块名称
[backup]
  # 模块的描述
  comment = "backup dir by oldboy"
  # 指定备份目录
  path = /backup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 3.创建管理备份目录的虚拟用户

# 用于管理备份目录
useradd -M -s /sbin/nologin rsync
1
2

# 4.创建备份服务认证用户密码文件

echo "test:qwe123123" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
1
2

# 5.创建备份目录

mkdir /backup
# 备份目录属主和属组,修改为配置的管理用户
chown rsync:rsync /backup
# 修改目录权限,防止其他用户可查看
chmod -R 700 /backup
1
2
3
4
5

# 6.启动备份服务

systemctl start rsyncd && systemctl enable rsyncd
systemctl status rsyncd
1
2

# 7.执行Rsync守护进程方式命令

从备份服务器拉取备份的数据:rsync [OPTION] rsync://[USER@]HOST[:PROT] /SRC... [DEST]

从客户端推送数据到备份服务器:rsync [OPTION] SRC... [USER@]HOST::DEST

参数说明:

  • SRC - 要推送的备份数据路径
  • [USER@] - 指定的认证用户
  • HOST - 指定远程主机的IP地址或主机名称
  • DEST - 备份服务器Rsync文件配置的模块名

# Rsync服务方式客户端配置

在客户端创建一个密码文件,只将密码信息放置在密码文件中,修改密码文件权限不让其他用户看到。

然后使用rsync时指定该参数 --password-file=[密码文件路径] 表示使用密码文件登录。

# 数据传输过程

1.客户端执行命令。

rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup\
1

2.服务端查找认证用户存不存在。

查找rsyncd.conf的认证用户配置中是否存在该用户 如果没有用户则报错 auth failed on module backup

3.验证用户密码是否正确。

验证用户密码是否正确是否与账号密码文件内用户的密码一致 如果不一致则报错 auth failed on module backup

4.客户端发送备份数据到服务端备份目录,服务端以备份管理用户身份接收数据。

权限会被修改为备份管理用户的属组和属组

# 常用参数

-a

包含rtopgDl参数

-v

显示详细的传输信息

  • file list传输的增量文件
  • sent 发送的字节数
  • received 接收的字节数
  • bytes/sec 传输的速率
  • total size is 传输的总大小

-z

压缩传输

--password-file=[密码文件路径]

使用密码文件登录用户

-r

对目录进行递归传输

-t

保持传输后文件修改时间不变

-o

保持文件的属主不变

-g

保持文件的属组不变

-p

保持文件的权限不变

-D

保持设备文件不变 防止传输后变成普通文件

-l

保持链接文件属性不变 (传快捷方式)

-L

备份链接文件时传输链接的源文件

-P

显示数据传输的进度信息

--exclude=[PATTERN]

排除指定数据 不被传输 (单个文件)

--exclude-from=[file]

排除文本文件中指定的文件 不被传输 (多个文件)

--bwlimit=RATE

指定传输速率

--delete

无差异同步(慎用),客户端目录没有的文件,备份服务器有的话将被删除

# 应用技巧

# 守护进程多模块功能配置

  • 模块同等于目录路径(记得创建目录),不同的数据备份在不同的目录,设置不同的模块。

# 守护进程的排除功能

命令指定

  • 使用--exclude=排除文件,相对路径是相对于/备份目录,例如:/tedir --exclude=sonA/1.txt。同时也支持绝对路径。

文件指定

  • 使用--exclude-from=排除文本路径
  • 将要排除的文件以绝对或者相对路径写入文本,然后使用命令指定该文本。

# 备份文件到子目录下

  • 可防止多台服务器备份的文件名重复而造成的覆盖。
  • 在备份时,直接在模块后面指定目录,目录以/结尾,例如:::backup/dir01/

Rsync只能创建一级目录,无法创建多级目录

# 守护进程的访问策略配置

一般有以下三种情况:

只有白名单,没有黑名单。

  • 只有在白名单内的主机或网段才能传输。

只有黑名单,没有白名单。

  • 只有不在黑名单内的主机或网段才能传输。

有白名单,也有黑名单。

  • 先匹配白名单,再匹配黑名单。即允许又阻止一个网段或主机时,白名单优先于黑名单。

# 常见错误

出现传输不了可以查看日志文件,前提是配置文件内配置了日志文件才会有。

rsync: recv_generator: failed to stat "hosts" (in backup): Permission denied (13)

selinux导致的远程备份连接失败,关闭selinux即可。

auth failed on module backup

该报错一是认证用户相关问题、认证用户不存在、认证用户密码错误,密码错误有以下几种情况:

1.注意密码后面的空格,可用vim搜索空格,或者底行模式使用:set list。

2.认证密码文件路径配置错误,查看实际密码文件路径和配置路径是否一致。

3.服务端password文件权限不正确,拥有者必须是root用户。

No route to host

防火墙配置问题,修改或关闭防火墙解决。

The remote path must start with a module name to a /

语法错误,目标备份目录应当是模块。

Unknown module 'backup'

模块名称错误,没找到指定模块。

cannot stat destination "." (in backup) failed: Permission denied (13)

备份管理用户对备份目录没有权限。

设置权限为管理用户可操作即可,但一般设置属主和属组并设置对应权限,防止普通用户可操作。

chdir failed

备份目录没有建立,或者建立的备份目录和配置文件中定义的不一样。

invalid uid rsync

没有rsync用户,一般rsync创建为虚拟用户即可。

name lookup failed for 172.16.1.31: Name or service not known

rsync客户端连接慢,可以查看日志进行分析。或者试试编写rysnc服务端hosts解析文件。

Connection refused (111)

rsync服务没有正确启动。

#Linux#备份工具#传输工具
其他基础命令
Sersync实时同步

← 其他基础命令 Sersync实时同步→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式