一招解决文件同步问题:rsync用法详解

导语:在工作和生活中,我们经常需要将文件从一个地方复制到另一个地方。传统的复制方法费时费力,而今天我们要介绍的 rsync 命令则可以轻松解决这个问题。本文将详细介绍 rsync 的用法,让你轻松掌握文件同步的技巧。


目录

一、rsync简介

二、rsync的基本用法

1、本地同步

2、远程同步

3、增量同步

三、rsync的高级用法

1、排除指定文件或目录

2、保留文件属性

3、监视文件变化并自动同步

四、rsync的妙用


一、rsync简介

rsync 是一款强大的文件同步工具,可以在本地和远程系统之间进行文件传输。它支持多种协议,包括 FTP、SFTP、SSH 等,可以适应不同的网络环境。rsync 具有高效、灵活和安全的特点,被广泛应用于个人和企业级文件同步。

二、rsync的基本用法

1、本地同步

在本地系统之间同步文件,可以直接使用 rsync 命令。例如,要将当前目录下的文件同步到目标目录,例如:

rsync -avz /path/to/source /path/to/destination

其中,-a 表示归档模式,将文件和目录结构一并复制;-v 表示详细输出,显示同步过程中的信息;-z 表示压缩传输,减少网络开销;/path/to/source 为源目录路径,/path/to/destination 为目标目录路径。

2、远程同步

如果要远程同步文件,需要使用 SSH 协议进行身份验证,可以使用密码或者 RSA 密钥认证,如果未配置 RSA 密钥,命令行会提示输入用户的密码。例如,要将本地文件同步到远程服务器上,例如:

rsync -avz /path/to/source username@remote_host:/path/to/destination

其中,username为远程服务器的用户名,remote_host为远程服务器的IP地址或域名。如果远程服务器不是使用默认的 22 端口怎么办?文章第 4 部分妙用中有提及。后面介绍的其它选项,也适用于远程同步。

3、增量同步

增量同步是指仅将新文件或变更的文件同步到目标目录。增量同步可以减少数据传输的网络流量,提升同步速度和效率。可用于工作目录备份、应用更新等场景,例如:

rsync -auvz /path/to/source /path/to/destination

相比之前的命令,增加了 -u 选项,该选项表示跳过目标目录比源目录更新的文件。

三、rsync的高级用法

1、排除指定文件或目录

在使用 rsync 复制文件时,可以使用 --exclude 选项排除指定文件或目录。例如,要排除名为 .git 的目录,例如:

rsync -avz --exclude='.git' /path/to/source /path/to/destination

如果要排除多个文件或目录,使用 --exclude-from=FILE 选项,将需要排除的文件或目录列出在 FILE 文件中,一个文件或目录占一行。文件或目录可以使用模式匹配。

2、保留文件属性

在使用 rsync 复制文件时,默认情况下会保留源文件的属性,如权限、时间戳等。如果要保留目标文件的属性,可以使用 --no-dereference 选项。例如:

rsync -avz --no-dereference /path/to/source /path/to/destination

3、监视文件变化并自动同步

如果要监视源目录的变化并自动同步到目标目录,可以使用 --watch 选项。例如:

rsync -avz --watch /path/to/source /path/to/destination

四、rsync的妙用

在网络环境不稳定的情况下,大文件传输面临着诸如传输速度慢、频繁中断等挑战。此时,我们需要进行长时间且多次的传输。可以通过循环来实现无人值守,每次 rsync 传输结束后,检查其返回码,如果返回码为0,表示文件传输已完成;若非0,则表示传输过程中断或出错,将再次启动传输过程。例如:

while true; dorsync --append -P -e 'ssh -p 9022' username@remote_host:/path/to/xxx.iso /path/to/destinationif [ $? == 0 ]; thenexitfi
done

其中,--append 表示追加数据到较短的文件,会在增量同步时计算文件大小并直接追加新的数据到文件,节省IO校验的过程;-P 等同于 --partial --progress,--partial 表示保留部分传输的文件,即中断后可断点续传,--progress 表示显示传输过程中的进度;-e 表示指定要使用的远程 shell,在它后面的内容中指定 ssh 及其端口。while 循环中,rsync 命令执行后,通过 $? 判断该命令的返回码是否为 0 来判断传输是否完成。上述内容可以放在 shell 文件中执行,也可以修改为一条命令直接在命令行执行。修改后如下:

while true; do\rsync --append -P -e 'ssh -p 9022' username@remote_host:/path/to/xxx.iso /path/to/destination;\if [ $? == 0 ]; then\exit;\fi;\
done

也就是在每行结尾处添加一个反斜线 \ 表示续行,每个 shell 命令结束时添加分号 ; 以示命令结束。也可以将换行符删除,修改后如下:

while true; do rsync --append -P -e 'ssh -p 9022' username@remote_host:/path/to/xxx.iso /path/to/destination; if [ $? == 0 ]; then exit; fi;done

最后还有一点,就是要为 username 配置 SSH 免密登录,也可以使用 sshpass 命令来自动输入密码,这样就可以真正无人值守。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch安装、插件介绍及Kibana的安装与使用详解

ElasticSearch安装、插件介绍及Kibana的安装与使用详解 1.安装 ElasticSearch 1.1 安装 JDK 环境 因为 ElasticSearch 是用 Java 语言编写的,所以必须安装 JDK 的环境,并且是 JDK 1.8 以上,具体操作步骤自行百度 安装完成查看 java 版本 …

go创建完美的枚举类型

文章目录 一.前言二. 枚举基本要素描述三. 枚举设计源码3.1 EnumCommon-通用能力3.2 Enum_news 业务枚举3.3 定制化业务枚举 一.前言 用惯了springboot和Jakarta.才发现springboot和Jakarta的语言是多么精妙! 一些场景我们需要使用枚举: 如建立字典值映射,仅通过代码实现方便快…

竞赛 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系…

用Flask快速生成报表

一、前言 《用Python快速生成报表之一》 我们介绍了用html-table快速生成表格数据报表,今天我们再介绍一下用Python Flask 快速开发报表,使用的是最古老的套页面方式。 二、Flask快速生成报表 Python有N多Web框架,最强大最出名的是Django&…

某全球领先的晶圆代工企业:替代FTP实现大规模文件的高效传输

全球领先的集成电路晶圆代工企业之一 该企业不仅是全球领先的集成电路晶圆代工企业之一,也是中国内地技术最先进、配套最完善、规模最大、跨国经营的集成电路制造企业集团。主要业务是根据客户本身或第三者的集成电路设计,为客户制造集成电路芯片&#…

Python Opencv实践 - 入门使用Tesseract识别图片中的文字

做车牌识别项目前试一试tesseract识别中文。tesseract的安装使用请参考: Python OCR工具pytesseract详解 - 知乎pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png…

IBM展示非冯·诺依曼架构AI芯片NorthPole

我们正处于人工智能的“寒武纪大爆发”时期。在过去的十年中,人工智能已经从理论和小型测试发展到企业规模的使用案例。但是,用于运行人工智能系统的硬件虽然越来越强大,但在设计时却没有考虑到当今的人工智能。随着人工智能系统规模的扩大&a…

【24种设计模式】单例模式(Singleton Pattern)

当我们需要确保一个类只有一个实例时,可以使用单例模式。单例模式确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 单例模式有多种实现方式,包括饿汉式、懒汉式和双重检查锁等。下面我们将分别介绍这些实现方式的特点和示例。 …

3ds Max2023安装教程(最新最详细)

目录 一.简介 二.安装步骤 软件:3ds Max版本:2023语言:简体中文大小:6.85G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU3GHz 内存16G(或更高)下载通道①百度网盘丨64位下载链接: …

Vue中的加密方式(js-base64、crypto-js、jsencrypt、bcryptjs)

目录 1.安装js-base64库 2. 在Vue组件中引入js-base64库 3.使用js-base64库进行加密 4.Vue中其他加密方式 1.crypto-js 2.jsencrypt 3.bcryptjs 1.安装js-base64库 npm install js-base64 --save-dev 2. 在Vue组件中引入js-base64库 import { Base64 } from js-ba…

Shopee买家通系统全自动化操作简单方便又快速

Shopee买家通系统是一款专门针对虾皮买家号所开发的全自动化操作系统,可以自动注册、自动加购加心愿单、自动下单等。 1、全自动化注册 准备好账号需要的资料后即可运行注册任务,程序运行时可以自动输入手机号、自动接收短信、自动输入账号密码。账号支…

用Visual Studio(VS)开发UNIX/Linux项目

目录 FTP是免不了的 正确设置头文件 组织项目结构 创建何种项目类型 FTP自动上传 大部分具有Windows开发经验的程序员会比较喜欢使用Visual Studio,而大部分Unix/Linux程序员则喜欢使用UltraEdit直接在主机上写代码。 为什么直接在主机上写代码呢,因…

FlutterUnit 周边 | 收录排序算法可视化

theme: cyanosis 1. FlutterUnit 更新:排序算法可视化 排序算法可视化是用视图层表现出算法执行过程中排序的过程,感谢 编程的平行世界 在 《十几种排序算法的可视化效果,快来看看!👀》》 一文中提供的算法支持。我进行…

单目3D目标检测[基于深度辅助篇]

基于深度辅助的方法 1. Pseudo-LiDAR Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving康奈尔大学https://zhuanlan.zhihu.com/p/52803631 首先利用DRON或PSMNET从单目 (Monocular)或双目 (Stereo)图像获取对应的…

dijkstra算法python

Dijkstra算法是一种用于寻找带权重图中从一个起始节点到其他节点的最短路径的算法。下面是一个使用Python实现Dijkstra算法的示例代码: import heapq def dijkstra(graph, start): # 创建一个字典来存储节点到起始节点的最短距离 distances {node: float(infinity)…

设计院图纸加密防泄密方案——天锐绿盾加密软件@德人合科技

天锐绿盾是一款专业的企业信息化防泄密软件,主要针对文档全生命周期进行加密保护,包括创建、修改、传输、归档、分发、销毁等全过程。它可以加强外发数据及终端离线的管理,对正常授权外带范围内的数据流程进行规范。设计图纸、文档等成果数据…

(免费领源码)java#Springboot#mysql装修选购网站99192-计算机毕业设计项目选题推荐

摘 要 随着科学技术,计算机迅速的发展。在如今的社会中,市场上涌现出越来越多的新型的产品,人们有了不同种类的选择拥有产品的方式,而电子商务就是随着人们的需求和网络的发展涌动出的产物,电子商务网站是建立在企业与…

顺序表的定义与实现(数据结构与算法)

一、顺序表的定义 1. 顺序表的定义 #define MaxSize 10 //定义最大长度 typedef struct{ ElemType data[MaxSize]; //用静态的“数组”存放数据元素int length; //顺序表的当前长度 …

Ubuntu设置允许root用户登录

1、激活root用户 sudo passwd root //设置root密码 su root //接着使用root登录 2、设置允许root通过ssh登录 nano /etc/ssh/sshd_config 将 PermitRootLogin 改为 yes 3、重启ssh service ssh restart 到这里就好了

SparkSQL的Shuffle分区设定及异常数据处理API(去重、缺失值处理)

一、Spark SQL的Shuffle分区数目设定 二、异常数据处理API (1)去重方法dropDuplicates (2)删除有缺失值的行方法dropna (3)填充缺失值数据fillna 一、Spark SQL的Shuffle分区数目设定 在允许spark程序时&a…