[每周一更]-(第96期):Rsync 用法教程:高效同步文件与目录

news2024/11/19 16:41:36

在这里插入图片描述

文章目录

    • 一、引言
    • 二、rsync 基本概念
    • 三、介绍rsync 是什么?
    • 四、安装
    • 五、rsync 基本语法
      • 常见示例(默认ssh协议):
    • 六、常用选项
      • 1. `-a` 或 `--archive`
      • 2. `-v` 或 `--verbose`
      • 3. `-z` 或 `--compress`
      • 4. `--delete`
      • 5. `--exclude`
      • 6. `--exclude-from=FILE`
      • 7. `--progress`
      • 8. `--bwlimit=RATE`
      • 9. 同步模拟
      • 10. 其他参数实例
    • 七、进阶用法
      • 1. 使用 SSH 密钥进行无密码同步
      • 2. 定时同步
    • 八、远程同步
      • 1. SSH 协议
      • 2. rsync 协议
    • 九、增量备份
      • 参考

一、引言

在 Linux 和 UNIX 系统中,rsync 是一个非常强大的工具,用于同步文件和目录。它不仅具有高效的增量备份能力,而且支持多种传输协议,如 SSH、rsync 协议等。本文旨在介绍 rsync 的基本用法和常见操作,帮助读者快速掌握其使用技巧。

二、rsync 基本概念

rsync 的工作原理是通过比较源和目标位置的文件差异,只传输差异部分,从而实现高效的同步。这使得 rsync 特别适合用于备份和镜像等场景。

三、介绍rsync 是什么?

rsync 是一个常用的 Linux 应用程序,用于文件同步。
它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代cp和mv命令。

rsync(Remote Sync)是一个强大的文件同步工具,广泛用于在本地或远程系统之间同步文件和目录。它可以在不同系统之间同步数据,保持文件的一致性,同时节省带宽和时间。

四、安装

如果本机或者远程计算机没有安装 rsync,可以用下面的命令安装。

# Debian
$ sudo apt-get install rsync

# Red Hat
$ sudo yum install rsync

# Arch Linux
$ sudo pacman -S rsync

注意,传输的双方都必须安装 rsync。

五、rsync 基本语法

rsync 的基本语法如下:

rsync [选项 -avz] 源路径 目标路径

-a:归档模式,保持文件属性,递归地复制目录。
-v:详细输出,显示正在复制的文件。
-z:压缩传输,减少数据传输量。

常见示例(默认ssh协议):

  1. 将本地目录 /path/to/source 同步到远程服务器 /path/to/destination
rsync -avz /path/to/source username@remote_host:/path/to/destination
  1. 从远程服务器同步目录到本地:
rsync -avz username@remote_host:/path/to/source /path/to/destination

六、常用选项

1. -a--archive

归档模式,表示以递归方式传输文件,并保持所有文件属性,如权限、时间戳、符号链接等。

2. -v--verbose

详细模式,输出同步过程中的详细信息。

3. -z--compress

在传输过程中对文件进行压缩,以提高传输效率。

4. --delete

删除目标位置中存在于源位置但已不存在的文件。这有助于保持源和目标之间的完全同步。
默认情况下,rsync 只确保源目录的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持相同,并且不会删除文件。如果要使得目标目录成为源目录的镜像副本,则必须使用–delete参数,这将删除只存在于目标目录、不存在于源目录的文件。

5. --exclude

排除某些文件或目录。可以多次使用此选项来排除多个文件或目录。

6. --exclude-from=FILE

从文件中读取要排除的文件或目录列表。每行一个排除规则。

7. --progress

显示同步过程中的进度信息。

8. --bwlimit=RATE

限制传输带宽,单位为 kB/s。

9. 同步模拟

有时你可能只想查看同步操作的结果而不实际执行,可以使用--dry-run选项进行模拟:

rsync -avz --dry-run /path/to/source_directory/ /path/to/destination_directory/

10. 其他参数实例

-r表示递归,即包含子目录。

-a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a比-r更有用。下面的用法才是常见的写法。

-v参数则是将结果输出到终端,这样就可以看到哪些内容会被同步。

-n参数模拟命令执行的结果,并不真的执行命令。

rsync -av source destination
目标目录destination如果不存在,rsync 会自动创建。执行上面的命令后,源目录source被完整地复制到了目标目录destination下面,即形成了destination/source的目录结构。

rsync -a source/ destination
source目录里面的内容,就都被复制到了destination目录里面,并不会在destination下面创建一个source子目录。

rsync -av --delete source/ destination
--delete参数会使得destination成为source的一个镜像。

排除问题操作

--exclude 参数
排除所有.TXT的文件
rsync -av --exclude='*.txt' source/ destination
rsync -av --exclude '*.txt' source/ destination
注意,rsync 会同步以"点"开头的隐藏文件,如果要排除隐藏文件,可以这样写--exclude=".*"

如果要排除某个目录里面的所有文件,但不希望排除目录本身,可以写成下面这样。
rsync -av --exclude 'dir1/*' source/ destination
rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination
rsync -av --exclude={'file1.txt','dir1/*'} source/ destination
rsync -av --exclude-from='exclude-file.txt' source/ destination

--include 参数
--include参数用来指定必须同步的文件模式,往往与--exclude结合使用。
rsync -av --include="*.txt" --exclude='*' source/ destination

七、进阶用法

1. 使用 SSH 密钥进行无密码同步

通过配置 SSH 密钥认证,可以实现 rsync 的无密码同步。首先,在本地生成 SSH 密钥对,并将公钥复制到远程服务器上的 ~/.ssh/authorized_keys 文件中。然后,在 rsync 命令中使用 -e ssh 选项来指定使用 SSH 协议进行传输。

确保在远程主机上已经设置了密钥,并且在本地主机上也已经设置了密钥。然后使用以下命令进行同步:

rsync -avz -e 'ssh -i /path/to/private_key' /path/to/source_directory/ username@remote_host:/path/to/destination_directory/

2. 定时同步

结合 Linux 的 cron 工具,可以实现定时同步文件或目录。例如,编辑 /etc/crontab 文件,添加一行类似下面的配置:

0 1 * * * /usr/bin/rsync -avz /path/to/source /path/to/destination

这表示每天凌晨 1 点执行一次同步操作。

八、远程同步

1. SSH 协议

本地文件同步远程服务器
rsync -av source/ username@remote_host:destination

远程文件同步本地服务器
rsync -av username@remote_host:source/ destination

栗子:
rsync -av nexus-3.29.0-02-unix.tar.gz 42.193.12.218@root:/home/humx
ssh: Could not resolve hostname root: Name or service not known
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(605) [sender=3.0.9]
[root@iZwz9aehttqhrmcj5oiusuZ test]# rsync -av nexus-3.29.0-02-unix.tar.gz root@42.193.12.218:/home/humx
The authenticity of host '42.193.12.218 (42.193.12.218)' can't be established.
ECDSA key fingerprint is 22:49:b2:5c:7c:8f:73:56:89:29:8a:bd:56:49:74:66.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '42.193.12.218' (ECDSA) to the list of known hosts.
root@42.193.12.218's password:
sending incremental file list
nexus-3.29.0-02-unix.tar.gz

sent 163855898 bytes  received 31 bytes  636333.70 bytes/sec
total size is 163835797  speedup is 1.00

录入密码后,信息会记录到ssh的配置文件:known_hosts中,下次还得录入密码


rsync 默认使用 SSH 进行远程登录和数据传输。

由于早期 rsync 不使用 SSH 协议,需要用-e参数指定协议,后来才改的。所以,下面-e ssh可以省略。

rsync -av -e ssh source/ user@remote_host:/destination


但是,如果 ssh 命令有附加的参数,则必须使用-e参数指定所要执行的 SSH 命令。

rsync -av -e 'ssh -p 2234' source/ user@remote_host:/destination


上面命令中,-e参数指定 SSH 使用2234端口。

2. rsync 协议

除了使用 SSH,如果另一台服务器安装并运行了 rsync 守护程序,则也可以用rsync://协议(默认端口873)进行传输。具体写法是服务器与目标目录之间使用双冒号分隔::。

$ rsync -av source/ 192.168.122.32::module/destination


注意,上面地址中的module并不是实际路径名,而是 rsync 守护程序指定的一个资源名,由管理员分配。
如果想知道 rsync 守护程序分配的所有 module 列表,可以执行下面命令。

$ rsync rsync://192.168.122.32


rsync 协议除了使用双冒号,也可以直接用rsync://协议指定地址。

$ rsync -av source/ rsync://192.168.122.32/module/destination

九、增量备份

rsync 的最大特点就是它可以完成增量备份,也就是默认只复制有变动的文件。

除了源目录与目标目录直接比较,rsync 还支持使用基准目录,即将源目录与基准目录之间变动的部分,同步到目标目录。

具体做法是,第一次同步是全量备份,所有文件在基准目录里面同步一份。以后每一次同步都是增量备份,只同步源目录与基准目录之间有变动的部分,将这部分保存在一个新的目标目录。这个新的目标目录之中,也是包含所有文件,但实际上,只有那些变动过的文件是存在于该目录,其他没有变动的文件都是指向基准目录文件的硬链接。

--link-dest参数用来指定同步时的基准目录。

$ rsync -a --delete --link-dest /compare/path /source/path /target/path

上面命令中,--link-dest参数指定基准目录/compare/path,然后源目录/source/path跟基准目录进行比较,找出变动的文件,将它们拷贝到目标目录/target/path。那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量备份,后面就都是增量备份了。

参考

  • 阮一峰讲rsync
  • Mirror Your Web Site With rsync

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

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

相关文章

飞腾E2000运行Zephyr操作系统

Phytium-Zephyr-SDK 1. 仓库介绍 1.1 本仓库特色 此项目是一个开源软件,专为物联网领域设计,基于Zephyr实时操作系统,针对Phytium系列CPU进行了专门的适配和应用开发。我们的目标是降低开发者的使用门槛,提供了部署文档和使用指…

【算法入门赛】B. 自助店评分(C++、STL、推荐学习)题解与代码

比赛地址:https://www.starrycoding.com/contest/8 题目描述 在上一场的入门教育赛中,牢 e e e找到了所有自助店的位置,但是他想发现一些“高分好店”,于是他利用爬虫技术从“小众点评APP”中爬取了武汉所有自助店的评分。 评分…

Linux应用(四)——系统IO函数

本节学习linux系统中常见的IO函数,讲解及其基本用法; 一、 open/close函数 open函数作用:系统调用open函数,打开指定路径的文件; int open(const char *pathname, int flags);打开一个存在的文件&#xff1…

【大学物理】东北大学-马文蔚听课笔记

4.1刚体的定轴转动_哔哩哔哩_bilibili 此笔记为课堂学习笔记~ 4.1刚体的定轴转动 基本教学要求 什么时刚体呢? 研究刚体运动切口 平动:刚体中所有的点的运动轨迹都完全相同。 转动:分为¥定轴转动和非定轴转动 刚体转动的角速度…

人脸采集训练识别

项目概述: 本地摄像头采集人脸数据集,通过训练得到trainingData.yml模型,加载haarcascade_frontalface_default.xml实现人脸识别。haarcascade_frontalface_default.xml 文件并不是一个完整的人脸识别模型,而是一个用于检测正脸&a…

基于Spring Cloud的房产销售平台设计与实现

基于Spring Cloud的房产销售平台设计与实现 开发语言:Java 框架:SpringCloud JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统部分展示 前台首页界面,前台首页包括房源信息、…

RS485空调系统到BACnet江森楼宇系统的高效整合攻略

智慧城市的每一栋建筑都在追求更高的能效与更佳的居住体验,而这一切的实现离不开强大且灵活的楼宇自动化系统。其中,协议转换网关作为连接不同设备的纽带,扮演着至关重要的角色。本文将以一个典型的商业综合体为例,揭秘BACnet协议…

零基础开发新闻小程序带评论点赞收藏功能,可以回复评论,借助小程序云开发云模板开发一款图文小程序,新闻列表新闻详情,登录注册功能

小程序官方有改版了,搞得石头哥不得不紧急的再新出一版,教大家开通最新版的cms网页管理后台 一,技术选型和技术点 1,小程序前端 wxml css JavaScript MINA原生小程序框架 2,数据库 云开发 云数据库 云…

力扣:62. 不同路径

62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&…

20232906 2023-2024-2 《网络与系统攻防技术》第九次作业

20232906 2023-2024-2 《网络与系统攻防技术》第九次作业 1.实验内容 本次实践的对象是一个名为pwn1的linux可执行文件。 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。 该程序同时包含另一个代码片段,getShell&am…

【负载均衡式在线OJ项目day4】编译运行功能整合及打包网络服务

一.前言 前面两天完成了编译和运行两个子模块,今天的任务是完成CompileRun模块,它的任务如下: 解析来自客户端的Json字符串,反序列化提取编译运行需要的数据,即代码,时间限制和空间限制把代码写入临时文件…

太阳能无人机的多元化应用

随着新能源技术的不断发展和成熟,太阳能在无人机的应用技术已经成熟。太阳能无人机得到了量产和广泛的应用。传统无人机相比,太阳能无人机无需燃油,运行费用低廉,搭载多种高科技设备,能够高效、多元化地采集和分析各类…

公司活动想找媒体报道宣传怎样联系媒体?

作为公司宣传负责人,我深知媒体报道对于企业活动宣传的重要性。然而,在过去,每当有重要活动需要媒体曝光时,我总会被繁琐的媒体联系工作所困扰。 那时,我需要一家家地查询媒体联系方式,发送邮件、打电话,甚至亲自前往媒体机构进行沟通。然而,这样的过程不仅费时费力,而且效率低…

成本降低 90%,出海社交平台 Typing 基于 Databend 的大数据探

Typing(输入中科技)成立于 2022 年,是一家主要面向东南亚、拉美、中东等海外地区提供社交平台的出海企业。其社交平台类似于国内的 Soul、陌陌等,提供视频直播、语音聊天室、短视频、生活分享、文字聊天等社交功能,注册…

英语学习笔记5——Nice to meet you.

Nice to meet you. 很高兴见到你。 词汇 Vocabulary Mr. 先生 用法:自己全名 / 姓 例如:Mr. Zhang Mingdong 或 Mr. Zhang,绝对不能是 Mr. Mingdong! Miss 女士,小姐 未婚 用法:自己全名 / 姓 例如&#…

区块链(打新)如何被割韭菜

看上去,像我只要去每个都买一遍新发行的代币,一定可以成功的 但是好像没有想象中这么简单,因为这些山寨币,庄家可以自己控盘的,看上去好像有跌宕起伏的买卖,但是一单掀桌子,庄家他自己都不玩了…

SOCKET编程(3):相关结构体与函数

相关结构体与函数 sockaddr、sockaddr_in结构体 sockaddr和sockaddr_in详解 struct sockaddr共16字节,协议族(family)占2字节,IP地址和端口号在sa_data字符数组中 /* Structure describing a generic socket address. */ struct sockaddr {__SOCKADDR…

推荐3个实用的github开源项目

目录: 1、AI生成高清短视频 2、媒体平台爬虫 3、文本转语音项目

ubuntu server 22.04 安装docker、docker-compose

ubuntu server 22.04安装docker有两种方式,第一种是使用ubuntu镜像源的软件包进行安装,第二种使用官方GPG密钥手动添加Docker存储库方式进行安装,两种方式都可以,但第二种方式略复杂,这里介绍第一种比较简单的安装方式…

图像ISP——AGC参数解析

前言 AWB和AGC是两种常见的自动调整功能。AWB用于自动调整图像的白平衡,以确保颜色在不同光照条件下仍然看起来自然。而AGC则用于自动调整图像的增益,以在不同的亮度条件下保持适当的曝光。 代码例程 static AWB_AGC_TABLE_S g_stAwbAgcTable {/* bvali…