rsync命令介绍与使用案例

一、rsync命令简介

        Rsync命令是一个常用的用于文件传输和同步的工具,rsync 可以理解为 remote sync(远程同步),为了减少网络数据发送量,只发送源文件和目标文件之间的差异信息,从而实现数据的增量的复制。它不仅可以远程同步数据(类似于 scp 命令),还可以本地同步数据(类似于 cp 命令)。不同于 cp 或 scp 的一点是,使用 rsync 命令备份数据时,不会直接覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。以下是一个简单的rsync命令示例:

        将本地文件复制到远程服务器:

                rsync -avz /本地路径/ 用户名@远程服务器IP地址:/远程路径/

注意:使用rsync进行远程文件传输,源端和目标端必须都装有rsync。

rsync优点:

    • 增量备份,支持socket(daemon),集中备份(支持推位,都是以客户端为参照物)。
    • 远程shell通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsecc服务。

rsync缺点:

    • 大量文件时候同步的时候,比对时间较长,有时候,rsync进程可能会停止。
    • 同步大文件,100G这样的大文件也会有问题,中断。未完整同步前,是隐藏文件,可以通过续传等参数实现传输。一次性远程拷贝可以用scp。

二、rsync三种传输模式

1.本地数据传输模式        

        rsync的本地数据传输模式,很类似于cp本地复制命令,可以实现文件目录移动备份等功能,多有不同的是rsync有增量复制的功能。

2.远程shell数据传输模式

        rsync远程shell数据传输模式一般是借助通道(如SSH)在两台服务器之间进行复制数据,这两台服务器之间是对等的,没有客户端与服务端之分,整个过程类似于SCP远程复制命令,所不同的是Rsync有增量复制的功能,但缺少scp的加密复制的功能。

3.守护进程传输模式

        守护进程传输模式是在客户端和服务端之间进行数据复制的,通常需要服务端部署守护进程服务,然后再客户端执行命令,实现数据的拉取和推送复制。守护进程的默认端口是837

#本地模式
   Local:  rsync [OPTION...] SRC... [DEST]
   #通过远程shell数据传输模式
   Access via remote shell:
     Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]    #从远端拉到本地
     Push: rsync [OPTION...] SRC... [USER@]HOST:DEST      #从本地推到远端
    #通过rsync守护进程模式
   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
    #如果只有源文件参数,没有目的文件参数,则只是显示源文件列表
   Usages with just one SRC arg and no DEST arg will list the source files instead of copying.

三、rsync命令的使用

        The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect to an rsync daemon, and require SRC or DEST to start with a module name.

        在 rsync 命令中,如果使用单个冒号(:),则默认使用 ssh 协议;反之,如果使用两个冒号(::)或‘rsync://’,则使用 rsync 协议。使用 rsync 在远程传输数据(备份数据)前,是需要进行登陆认证的,这个过程需要借助 ssh 协议或者 rsync 协议才能完成。

        ssh 协议和 rsync 协议的区别在于,rsync 协议在使用时需要额外配置,增加了工作量,但优势是更加安全;反之,ssh 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。

OPTION 参数

-v 观察模式,输出更多资讯

-q 与 –v 相反,仅显示错误信息

-u 仅更新较新的文件

-n 假运行,不实际传输文件

-l, --links 软链接同步,指定的内容不一定有效

-L, --copy-links 将软链接转换为普通文件,实际内容放入文件中

-r 递归复制,针对目录

-p 复制时保持属性不变

-t 保存原有时间属性

-g 保存原有群组

-o 保存原有拥有人

-D 保存原有设备属性

-a 归档模式,相对于-rlptgoD,所以-a最常用

-z 在传输时压缩,节省带宽,加快传输速度

-P ,--progress显示传输进度

-e 使用协议通道,例如ssh,-e ssh

--delete 删除那些DST中SRC没有的文件

如上图所示:

        -a 是归档传输,-z 是压缩传输,-v 是显示传输详情

        另外源地址末尾不加'/'是传输整个目录到目标端,有'/'是指文件夹中的内容传输到目标端。

        rsync -av /src/foo /dest

        rsync -av /src/foo/ /dest/foo

        以上命令效果一样

如上图,软链接传输过来还是软链接文件,但内容不一定有效

        -P 显示传输进度

        远程shell传输模式,-e 可以指定ssh协议,并制定端口

四、使用守护进程模式

        1、首先选一台主机作为启动守护进程的主机,如A主机,在A主机上编辑配置文件;

        vim /etc/rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area
uid=nobody
gid=nobody
max connections=4
use chroot = no
pid file=/var/run.rsyncd.pid
transfer logging=yes
#模块名
[app]
path=/home/rsync
comment=test
ignore errors
read only=yes
list=yes
# 认证授权
#auth users=app
#secrets file=/etc/rsyncd.secrets

        在A主机上启动守护进程:rsync --daemon

2、在B主机上传输文件,以下是从源端拉取到本地。两种方式,注意区别。

3、认证授权功能

        在配置文件中配置授权用户及密码文件路径。

        注:

                1、服务端的密码文件格式是账号:密码,比如:rsync:123456

                2、密码文件权限必须是600:chmod /etc/rsyncd.secrets

                3、使用什么用户启动守护进程,密码文件的属主也应该是该用户

        客户端指定密码文件

                rsync -azv app@192.168.203.131::app --password-file=/home/rsyncd.secrets

                1、客户端的密码文件权限必须为600,即:chmod 600 /home/rsyncd.secrets

                2、密码文件中直接输入密码,如:123456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/97900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux(扩展篇)

Linux扩展篇 软件包管理RPMRPM概述RPM查询命令RPM卸载命令RPM安装命令 YUM仓库配置YUM概述YUM的常用命令修改网络 YUM 源安装 wget, wget 用来从指定的 URL 下载文件在/etc/yum.repos.d/目录下,备份默认的 repos 文件下载网易 163 或者是 aliyun 的 repos 文件使用下…

基于RabbitMQ的模拟消息队列需求文档

文章目录 一、项目背景二、需求分析1.核心概念2.BrokerServer核心组件3.核心API4.交换机类型5.持久化6.网络通信7.消息应答 三、消息队列模块划分 一、项目背景 什么是消息队列? 消息队列就是,基于阻塞队列,封装成一个独立的服务器程序&#…

Windows下Git Bash调用rsync

rsync 提供了补充只需要在git安装目录下放入对应的文件即可。 需要将这个三个文件放到git的bin目录下 如果是默认安装路径是如下: C:\Program Files\Git\usr\bin 然后大功告成。

Redis 主从复制和哨兵模式

一、概念 主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower)。数据的复制是单向的,只能由主节点…

通过参数化可变形曲线直接从 X 射线投影数据计算分割研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

云安全攻防(十三)之 使用minikube安装搭建 K8s 集群

使用minikube安装搭建 K8s 集群 Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化,一般来说K8s安装有三种方式,分别是Minikube装搭建 K8s 集群,特点是只有一个节点的集群&…

K8S:K8S自动化运维容器Docker集群

文章目录 一.k8s概述1.k8s是什么2.为什么要用K8S3.作用及功能4.k8s容器集群管理系统 二.K8S的特性1.弹性伸缩2.自我修复3.服务发现和复制均衡4.自动发布和回滚5.集中化配置管理和秘钥管理6.存储编排7.任务批量处理运行 三.K8S的集群架构四.K8S的核心组件1.Master组件&#xff0…

探索FedLCM——解锁FATE部署管理的实用功能

FedLCM (Federation Lifecycle Manager,联邦生命周期管理器)是 VMware 在 2022 年贡献到 FATE 社区的开源项目,通过 FedLCM 的部署管理服务和任务管理服务,我们可以用图形化的方式完成包括 FATE 集群的云原生部署、联邦…

Ubuntu入门04——目录与文件

目录 1.显示当前工作目录 2.更改目录 3.创建工作目录 4.删除工作目录 5.移动文件或者文件夹 6.文件夹and文件查看命令 7. 回到根目录,回到上一级 8.删除工作目录 9.查看目录和文件 10.以树状图列出目录内容 11.文件查找 12.在数据库中查找文件或目录 1…

201天稳定运行!太保核心系统升级落地完成里程碑突破

7 月 7 日,2023 全球数字经济大会在京举行,国内首个全险种核心迁移至国产数据库的系统在会上正式亮相。 P17 核心系统,是太平洋保险(集团)股份有限公司(以下称“太平洋保险”)对接旗下子公司全业…

C语言:static关键字的使用

1.static修饰局部变量 这是static关键字使用最多的情况。我们知道局部变量是在程序运行阶段在栈上创建的,但是static修饰的局部变量是在程序编译阶段在代码段(静态区)创建的。所以在static修饰的变量所在函数执行结束后该变量依然存在。 //…

Linux查日志的六种实用方法

工具(比Xshell好用,国产且免费) 先给大家安利一个软件:FinalShell官网 你打印出了日志,可以直接在这个上面搜索高亮 查日志 # 持续打印最新的日志,300行 tail -300f xxx.log# 查某个值 grep "内容&q…

YOLO目标检测——人脸表情识别数据集下载分享

受试者在15个视点和19个照明条件下成像,同时显示一系列面部表情,资源包括PIE照明子集(1154张人脸灰度图,3232)和三个Pose05、Pose07、Pose09子集(分别包括3332张、1629张、859张人脸灰度图,6464…

持续加码,科士达重仓储能!

储能的热度,如温度计一样真实展现在各种数据榜单上:新注册企业的数量,转型跨界的企业,尤其IPO募资扩产规模,更是成为了储能企业竞赛的新标准。 日前,科士达一则新的定向募资预案,吸引了业内广泛…

基于java+springboot+vue的交流互动系统-lw

​ 系统介绍: 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多企业的之中,随之就产生了“交流互动系统”,这样就让交流互动系统更加方便简单。 对于本交流互动系统的设计来说&a…

ceph中PGLog处理流程

正文 struct pg_log_entry_t {ObjectModDesc mod_desc; //用于保存本地回滚的一些信息,用于EC模式下的回滚操作bufferlist snaps; //克隆操作,用于记录当前对象的snap列表hobject_t soid; …

前端list列表自定义图标并设置大小

前端list列表自定义图标并设置大小 一、前端list列表基础知识回顾 前端公有两种列表,一种是有序列表(ol),一种是无序列表(ul),它们的子元素都是(li)。 1.1 有序列表&a…

nacos服务器启动报错集合

报错1 Error creating bean with name ‘user‘: Unsatisfied dependency expressed through field ‘jwtTokenManage 开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为: ### Since 1.4.1, worked when…

Matlab 使用经验分享(常用函数介绍;矩阵常见计算)

Matlab 使用经验分享 大家好!最近有很多朋友询问我关于 Matlab 的使用,于是我决定写一篇博客来分享一下我的经验。对于数学和编程爱好者来说,Matlab 是一个非常有用的工具。我自己在数学实验和数学建模竞赛中也经常使用它。那么,…

JavaScript常见的运算符

一、运算符和运算元 1.认识运算符 在小学的时候我们就学习了各种运算符,比如加号 、乘号 *、减号 - 、除号/ 几乎所有的编程语言都有各种各样的运算符(也被称之为操作符,operators) 初次接触这些运算符, 你会感觉种类繁多, 难以记忆.但是并不需要特别…