Linux rsync文件同步工具

scp的不足

1. 性能问题

单线程传输
  • SCP只使用单线程进行传输,这意味着在传输大文件或大量小文件时,其传输速度和效率可能不如其他多线程工具。
无法压缩数据传输
  • SCP不支持内置的压缩机制,这在传输大文件时会导致带宽使用效率较低。

2. 功能有限

缺乏断点续传
  • 如果传输过程中断,SCP没有内置的断点续传功能,需要重新开始传输。
无法同步目录
  • SCP只适用于单次传输,无法像rsync那样进行目录同步。

3. 用户体验问题

交互式密码输入
  • SCP通常需要交互式输入密码,这在自动化脚本中不方便。尽管可以使用SSH密钥认证来解决这个问题,但对于不熟悉密钥管理的用户来说,这增加了复杂性。
缺乏详细的传输信息
  • SCP在传输过程中提供的信息较少,无法实时监控传输进度或速度,用户体验不佳。

4. 兼容性问题

不同平台的实现差异
  • 虽然SCP广泛支持Unix和Linux系统,但在某些平台上(如Windows)可能需要额外的软件(如PuTTY的pscp)来实现SCP功能。

5. 安全性问题

暴露的元数据
  • SCP传输时会暴露文件的元数据(如文件名、路径等),在某些高安全性需求的场景下,这可能是一个问题。

rsync简介

rsync 是一个用于在计算机之间高效地同步文件和目录的开源实用程序。它支持增量传输,只传输修改过的数据,从而节省带宽和时间。

rsync 的主要特点

增量传输
  • 增量传输rsync 只传输自上次同步以来更改的部分数据,大大减少了传输的数据量和时间。
压缩支持
  • 压缩传输:支持在传输过程中压缩数据,进一步减少传输时间和带宽使用。
远程同步
  • 远程同步:可以通过 SSH 等加密通道在远程计算机之间同步文件,确保数据安全。
保留文件属性
  • 保留属性:在同步过程中,可以保留文件的权限、时间戳、符号链接等属性。
灵活的排除和包含
  • 排除/包含规则:可以使用模式来指定要排除或包含的文件和目录。

使用rsync

基本用法:

rsync [选项] 来源 目标

常用选项:
-r:递归处理目录。
-a:归档模式,表示递归传输并保留文件权限、时间戳、符号链接等信息。
-v:详细模式,显示传输过程中的详细信息。
-z:在传输过程中对文件进行压缩。
-P:显示传输进度,并保留部分传输文件以便恢复。
-e:指定远程shell程序(如ssh)。

--delete:删除目标目录中不存在于源目录中的文件。
--exclude:排除指定的文件或目录,不进行同步。
--include:仅同步指定的文件或目录,忽略其他文件。
--bwlimit:限制带宽使用,控制传输速度。

本地同步备份:

[root@localhost ~]# rsync -av source/ Destination/
sending incremental file list
./   
file1
file2sent 176 bytes  received 57 bytes  466.00 bytes/sec
total size is 0  speedup is 0.00
[root@localhost ~]# ll Destination/
total 0
-rw-r--r--. 1 root root 0 Jul 12 20:27 file1
-rw-r--r--. 1 root root 0 Jul 12 20:27 file2

远程同步备份:

将本地文件同步备份到远端服务器;

[root@localhost ~]# rsync source/* root@1.94.13.218:/root/Destination/

将远端服务器文件同步到 本地服务器上;

 

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

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

相关文章

我花了5年时间训练自己这种能力,希望你也能成功

人生最重要的能力是日拱一卒,即每天做一点点对自己有利的事并持续足够长的时间。作者之前急于求成,减肥失败。同事通过每月改进一件小事成功减肥且知识储备丰富。作者受启发后,通过走楼梯、换代糖等小改变,用 4 年减了 40 斤&…

从头开始搭建一套Elasticsearch集群

前言 刚开始使用ES接触的就是rpm或者是云上提供的ES服务,基本上开箱即用。特别是云上的ES服务,开局就是集群版本,提供的是优化后的参数配置、开箱即匹配访问鉴权及常用插件,如无特殊需要基本上屏蔽了所有细节,直接可投…

深入了解 MySQL 的 EXPLAIN 命令

一、什么是 EXPLAIN 命令? EXPLAIN 命令用于显示 MySQL 如何执行某个 SQL 语句,尤其是 SELECT 语句。通过 EXPLAIN 命令,可以看到查询在实际执行前的执行计划,这对于优化查询性能至关重要。 二、EXPLAIN 的基本用法 要使用 EXP…

如何禁用键盘上的特定键或快捷方式?这里有详细步骤

要禁用特定的键盘键或快捷键吗?微软官方应用程序Microsoft PowerToys使这项任务变得非常简单。以下是使用Microsoft PowerToys中的键盘管理器禁用特定键或快捷方式的快速指南。 如果你还没有安装Microsoft PowerToys 如果你的设备上没有安装Microsoft PowerToys&a…

springboot上传图片

前端的name的值必须要和后端的MultipartFile 形参名一致 存储本地

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【匿名密钥证明(C/C++)】

匿名密钥证明(C/C) 在使用本功能时,需确保网络通畅。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 确定密钥别名keyAlias,密钥别名最大长度为64字节;初始化参数集:通过[OH_Huk…

css3 transform的旋转和位移制作太阳花

css3 transform 实例展示知识点rotate 旋转translate 位移transform: translate(300px,200px) rotate(90deg) 实例代码 实例展示 知识点 transform的两个属性 rotate 旋转 translate 位移 transform: translate(300px,200px) rotate(90deg) 实例代码 <!DOCTYPE html&g…

flask 定时任务(APScheduler)使用current_app app_context()上下文

前言: 描述&#xff1a;flask定时任务调用的方法中使用了current_app.logger.info()记录日志报错 报错代码 raise RuntimeError(unbound_message) from None RuntimeError: Working outside of application context.This typically means that you attempted to use functiona…

IDEA中Git常用操作及Git存储原理

Git简介与使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系统&#xff08;VSC&#xff09;&#xff0c;是团队合作开发…

算法学习笔记(8.3)-(0-1背包问题)

目录 最常见的0-1背包问题&#xff1a; 第一步&#xff1a;思考每轮的决策&#xff0c;定义状态&#xff0c;从而得到dp表 第二步&#xff1a;找出最优子结构&#xff0c;进而推导出状态转移方程 第三步&#xff1a;确定边界条件和状态转移顺序 方法一&#xff1a;暴力搜素…

MFC之对话框--线宽/线型/颜色

文章目录 线宽输入实现优化无法记录上一次线粗问题 线宽滑动实现实现选择线类型实现颜色选择总结 线宽输入实现 优化无法记录上一次线粗问题 线宽滑动实现 实现选择线类型 实现颜色选择 总结 1。创建新窗口&#xff08;dialog)会创建一个新的类&#xff0c;在类中实现窗口中的…

vue中父子传递属性值

1、父传子属性值 自定义图库组件 在add.vue中应用tuku组件并给默认值 效果 2、 子传父&#xff0c;逆向赋值 add.vue和第一问中一样 修改tuku组件&#xff0c;传值给add.vue 3、多个传递 效果&#xff1a; 点击两个修改按钮后 4、使用defineModel简化父子传值 其他代码跟…

【postgresql】时间函数和操作符

日期/时间操作符 加减操作符&#xff1a; 和 - 可以用于日期、时间、时间戳和时间间隔的加减操作。 SELECT 2024-01-01::date INTERVAL 1 day as "date"; ; -- 结果&#xff1a;2024-01-02SELECT 2024-01-01 12:00:00::timestamp - INTERVAL 2 hours as "…

CSS上下悬浮特效

要实现一个上下悬浮的特效&#xff0c;可以使用CSS的keyframes规则和动画属性。以下是一个简单的示例&#xff1a; 代码示例 /* 定义一个名为floating的动画 */ keyframes floating {0% {transform: translateY(0); /* 初始位置 */}50% {transform: translateY(-4px); /* 向上…

KALI使用MSF攻击安卓设备

这期是kali使用MSF进行安卓渗透的保姆级别教程&#xff0c;话不多说&#xff0c;直接开始。 准备材料&#xff1a; 1.装有kali的实体机或虚拟机&#xff08;这里用实体机进行演示&#xff09; 2.一台安卓10.0以下的手机 打开kali&#xff0c;先用ifconfig查看自己的kali IP地址…

Python3极简教程(一小时学完)下

目录 PEP8 代码风格指南 知识点 介绍 愚蠢的一致性就像没脑子的妖怪 代码排版 缩进 制表符还是空格 每行最大长度 空行 源文件编码 导入包 字符串引号 表达式和语句中的空格 不能忍受的情况 其他建议 注释 块注释 行内注释 文档字符串 版本注记 命名约定 …

[BJDCTF2020]EasySearch1

知识点&#xff1a; 1.swp泄露 2.md5碰撞 3.PHP代码审计 4.SSI代码执行漏洞 // Apache SSI 远程命令执行漏洞复现 看着像sql注入&#xff0c;不过注入无果&#xff0c;扫一下目录试试~ 发现是swp泄露. SWP文件泄露漏洞是指在使用 Vim编辑器 编辑一个文件时&#xff0c;Vim会在…

OpenCV漫水填充函数floodFill函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能&#xff0c;它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…

MUR2060CTR-ASEMI无人机专用MUR2060CTR

编辑&#xff1a;ll MUR2060CTR-ASEMI无人机专用MUR2060CTR 型号&#xff1a;MUR2060CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 批号&#xff1a;最新 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;20A 最大循环峰值反向电压&#xff08;VRRM&#…

【数据结构】线性表----队列详解

1. 队列的基本概念 话不多说&#xff0c;直接开始&#xff01; 队列是一种线性数据结构&#xff0c;同栈类似但又不同&#xff0c;遵循先进先出&#xff08;FIFO, First In First Out&#xff09;的原则。换句话说&#xff0c;最先进入队列的元素会最先被移除。这样的特点使得…