Rsync 文件同步(一):系统基本操作

基础认知

Rsync (remote sync)

  • UNIX 及类 UNIX 平台下一款数据镜像备份软件
  • 很神奇
  • 不同于 FTP 或其他文件传输服务进行全量备份,它可以根据数据的变化进行差异备份
  • 可以使用它进行本地数据或远程数据的复制
  • 可以使用 SSH 安全隧道进行加密数据传输
  • Rsync 服务端定义源数据,客户端仅在源数据发生改变后才会从服务端上实际复制数据至本地
  • 源数据备删除,则客户端数据也会被删除
  • Rsync 使用 TCP 873 端口

官网

rsync (samba.org)

Logo

rsync

Rsync 服务端

环境说明

  • 2核2G的虚拟机
  • CentOS Linux release 7.9.2009 (Core)
  • 需要共享或者同步的目录:/home/share
  • 静态地址:

从官网看最新版本是3.2.7,我们在线安装的版本试试是多少(试过是3.1.2)

前置设置

  1. 更换国内yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all && yum makecache

image-20230209213946899

  1. 在线安装 Rsync
#版本的差异性具体可以看官网说明
yum install rsync -y

image-20230209214156898

  1. 关闭selinux与防火墙
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#操作后重启服务器

image-20230209214428448

配置说明

  • 默认是不存在 Rsync 配置文件的,作为服务端,肯定是需要一个配置文件,然后使用守护进程模式启动 rsync 服务即可
  • 主要的三个配置文件
    • rsyncd.conf 主配置文件
    • rsyncd.secrets 密码文件
    • rsyncd.motd 服务器信息文件

创建共享目录,存入测试文件

mkdir -p /home/share

image-20230209215019483

配置文件详解

######配置文件位置:/etc/rsyncd.conf
##############以下是配置文件主内容##############
#服务器信息文件,同步文件的时候展示的内容
motd file = /etc/rsyncd.motd
#是否开启文件传输日志功能
transfer logging = yes
#日志文件名称
log file = /var/log/rsyncd.log
#进程号保存文件
pid file = /var/run/rsyncd.pid
#锁文件名称
lock file = /var/run/rsync.lock
#服务器监听的端口号
port = 873
#服务器监听网卡接口的ip地址
address = 0.0.0.0
#设置进行数据传输时所使用的账号名称或ID号
uid = 0
#设置进行数据传输时所使用的组名称或者GID号
gid = 0
#chroot为yes会改变根目录,会将根目录映射到path选项的目录下,对客户端,系统的根就是path所指的路径,这样做需要root权限
use chroot = yes
#设置并发数,0代表无限制,如果超出并发数,依然有客户端连接的话,就会收到稍后重试的提示
max connections = 10
##############以下是模块内容##############
#rsync通过模块定义同步的目录,与samba定义共享目录的效果,可以定义多个模块
#模块名称
[test]
#模块说明
comment = then is test
#同步目录
path = /home/share
#忽略一些IO错误
ignore errors
#exclude可以指定例外的目录,对/home/share目录下的某个目录设置为不同步数据
#exclude = test/
#设置允许连接服务端的账号,账号可以是系统中不存在的用户
auth users = test1
#设置密码验证文件名称和路径,文件权限要求为只读,权限建议600,仅在设置auth users参数后有效
secrets file = /etc/rsyncd.secrets
#客户端请求显示模块列表外,是否显示
list = true

创建密码文件

echo 'test1:123456' >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

image-20230209221439327

#可以在服务器信息文件写入一些描述
echo 'Welcome to Rsync' >> /etc/rsyncd.motd

image-20230209221719757

daemon 运行

#其实就是启动一个服务,对于centos7来说
systemctl restart rsyncd

#配置开机启动起
systemctl enable rsyncd

image-20230210162642769

Rsync 客户端

安装客户端

##按照前面的设置安装rsync即可,唯一的区别就是不用配置文件和daemon运行
rsync --version

image-20230209222821644

rsync 命令使用

SRC 表示源路径,DEST 表示目标路径

本地复制

rsync [选项] SRC [DEST]

通过远程 shell 执行复制

下载数据:rsync [选项] [USER@]HOST:SRC [DEST]

上传数据:rsync [选项] SRC [USER@]HOST:DEST

通过 rsync 进程复制

下载数据:

  • rsync [选项] [USER@]HOST::SRC [DEST]

  • rsync [选项] rsync://[USER@]HOST[:PORT]/SRC [DEST]

上传数据:

  • rsync [选项] SRC [USER@]HOST::DEST
  • rsync [选项] SRC rsync://[USER@]HOST[:PORT]/DEST

第一个路径参数一定是源文件路径,即作为同步基准的一方,可以同时指定多个源文件路径。最后一个路径参数则是目标文件路径,也就是待同步方。路径的格式可以是本地路径,也可以是使用user@host:path或user@host::path的远程路径,如果主机和path路径之间使用单个冒号隔开,表示使用的是远程shell通信方式,而使用双冒号隔开的则表示的是连接rsync daemon。另外,连接rsync daemon时,还提供了URL格式的路径表述方式rsync://user@host/path

选项

选项说明
-v显示详细信息
-q静默模式,无错误信息
-a归档模式,主要保留文件属性
-r递归
-b存在同名文件则旧的重命名为【~filename】,使用 --suffix指定不同的备份前缀
–back-dir将备份文件保存指定目录
–suffix指定备份文件前缀
-u目标地址要比下载的文件新,则不执行同步,不会用旧文件去覆盖新的
-l保留符号链接
-p保留文件属性
-H保留硬链接
-A保留ACL权限
-X保留文件附加属性
-o保留文件所有者属性
-g保留文件所属组属性
–devices保留设备文件
–specials保留特殊文件
-D等同于 --devices --specials
-t保留修改时间属性(任何时候使用都应该加上)
-W不做增量检查,直接复制全部文件
-e指定远程shell
–existing仅同步目标路径已经有的文件,不下载源路径下的新文件
–delete删除那些仅在目标中存在的文件(源路径不存在)
-z传输过程中对数据进行压缩
–include=PATTERN匹配不排除的文件
–exclude=PATTERN匹配需要排除的文件
–progress显示数据传输的进度信息
-partial保留因故障未传输完的文件
-P等同于–progress -partial
–password-file=FILE指定密码文件,将密码写入文件,实现非交互式数据同步
–list-only仅列出服务器模块列表
-R使用相对路径。意味着将命令行中指定的全路径而非路径最尾部的文件名发送给服务端,包括它们的属性

rsync 工作方式一:本地实现同步

  1. 将本机的/home/share复制到/tmp下
rsync -avzt /home/share /tmp

image-20230210155835211

  1. 将本机的/etc/fstab文件复制到/tmp下
rsync /etc/fstab /tmp
#不加任何参数复制文件会导致文件的修改时间

image-20230210155955117

  1. 将本机的/home/share复制到/tmp下,但是要生成/home子目录
rsync -Rr /home/share /tmp

image-20230210160234995

  1. 将本机的/var/log/audit/audit.log的文件复制到/home下,但是我只需要log后面的路径
rsync -Rr /var/log/./audit/audit.log /home

image-20230210160525263

rsync 工作方式二:通过远程 shell

下载数据:rsync [选项] [USER@]HOST:SRC [DEST]

上传数据:rsync [选项] SRC [USER@]HOST:DEST

  1. 在客户端操作,从服务端去下载/home/share里面的文件
rsync -avzt root@192.168.204.52:/home/share /home

image-20230210161729365

  1. 将ceshi.txt上传到服务端的/home/share下
rsync -avzt /home/ceshi.txt root@192.168.204.52:/home/share

image-20230210162007429

服务端查看这个文件

image-20230210162025105

rsync 工作方式三:通过 rsync 进程

要在客户端设置密码文件

echo "123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass

image-20230213105929605

下载数据:

  • rsync [选项] [USER@]HOST::SRC [DEST]

  • rsync [选项] rsync://[USER@]HOST[:PORT]/SRC [DEST]

上传数据:

  • rsync [选项] SRC [USER@]HOST::DEST
  • rsync [选项] SRC rsync://[USER@]HOST[:PORT]/DEST
  1. 显示服务端(192.168.204.52)所有的模块名称,服务端配置了 list=true才可用
rsync --list-only ceshi1@192.168.204.52::

image-20230210163451394

  1. 从服务端定义的test模块,将定义的路径下载在本地上
rsync -avzt test1@192.168.204.52::test /tmp
#输入密码后即可下载到本地

image-20230213110855267

  1. 客户端指定密码文件进行文件下载
rsync -avzt --password-file=/etc/rsync.pass test1@192.168.204.52::test /tmp
#客户端每次连接rsync输入密码都比较麻烦,我们创建密码文件/etc/rsync.pass,文件中包含了密码,就可以指定了,注意这个密码文件的权限

image-20230213111046717

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值