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

在这里插入图片描述

文章目录

    • 一、引言
    • 二、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.gzsent 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.32rsync 协议除了使用双冒号,也可以直接用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.rhkb.cn/news/326348.html

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

相关文章

未来娱乐新地标?气膜球幕影院的多维体验—轻空间

在中国,一座独特的娱乐场所正在崭露头角:气膜球幕影院。这个融合了气膜建筑与激光投影技术的创新场所,不仅令人惊叹,更带来了前所未有的科幻娱乐体验。让我们一起探索这个未来的娱乐空间,感受其中的多维魅力。 现场演出…

Linux-- 重定向缓冲区

目录 0.接上篇文章 1.粗略的见一下这两个问题 2.理解重定向 3.理解缓冲区 0.接上篇文章 Linux--基础IO(文件描述符fd)-CSDN博客 1.粗略的见一下这两个问题 先来了解几个函数: stat()函数用于获取指定文件或符号链接的元数据。如果文件是…

巩固学习7

正则表达式 就是用来找到符合模式的字符串,这些模式包括:是什么字符,重复多少次,在什么位置,有哪些额外的约束 找某个字符串 import re text身高:178 体重:168 学号:123456 密码:9527 #在Python中,r前缀用…

时间瑾眼中的IT行业现状与未来趋势

文章目录 技术革新与行业应用IT行业的人才培养与教育人工智能与机器学习的演进数据安全与隐私保护可持续发展与绿色技术社会责任与道德规范 随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链…

【Linux 系统】多线程(生产者消费者模型、线程池、STL+智能指针与线程安全、读者写者问题)-- 详解

一、生产者消费者模型(重点) 如图,在生活中,学生就是消费者角色,工厂是真正的生产者角色,那么超市是什么呢?为什么需要超市?超市是交易场所。我们的家附近不一定有工厂,而…

C++——缺省参数与重载函数

目录 ​前言 一.缺省参数 1.1缺省参数概念 1.2缺省参数分类 注意事项: 二.函数重载 2.1函数重载概念 2.2c支持函数重载原理——命名修饰 前言 本篇文章主要讲述c中有关于缺少参数与函数重载的相关概念与实例,以下是本人拙见,如有错误…

OpenAI之Whisper实时语音分析转文字

1.安装ffmpeg 2.安装python3.11 3.安装whisper pip install whisper conda环境安装whisper conda install whisper 命令行安装openai-whisper pip install openai-whisper 设置环境变量 4.分析语音并输出(默认使用GPU计算,如果没有安装CUDA,请使用CPU) whisper …

centos7.6安装mysql

博客主页:花果山~程序猿-CSDN博客 文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 1.在网页中寻找mysql…

数字水印 | Arnold 变换的 Python 代码实现(灰度图版)

效果 将彩色图转换为灰度图,并进行 A r n o l d \mathsf{Arnold} Arnold 置乱和还原。 代码 import cv2 import numpy as np from matplotlib import pyplot as pltdef arnold(img, shuffle_times, a, b):r, c, d img.shapeimg img[:, :, 0]p np.zeros((r, c),…

【算法刨析】完全背包

完全背包与01背包的区别 01背包对于一个物品只能选择一次,但是完全背包可以选择任意次; 思路 和01背包类似,01背包我们只需要判断选或不选,完全背包也是如此,不同的是,对于这个物品我们在判断选后在增加一…

参加了深圳线下组织的商业沙龙,收获颇丰

能参加本次商业沙龙也本是一连串的事情导致的,听我慢慢道来: 大概在4.13之前无意收到忘了谁发的短信了,说有个啥AI的报告会,然后我就报名了: 会上大佬还是挺多的,来了好多各界的老板和政府的领导&#xff…

springcloud -nacos实战

一、nacos 功能简介 1.1.什么是Nacos? 官方简介:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 Nacos的关键特性包括: 服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数…

【投稿优惠|快速见刊】2024年能源资源与材料应用国际学术会议(ICERMA 2024)

全称:【投稿优惠|快速见刊】2024年能源资源与材料应用国际学术会议(ICERMA 2024) 会议网址:http://www.icerma.com 会议时间: 2024/2/29 截稿时间:2024/2/20 会议地点: 长沙 投稿邮箱:icermasub-conf.com 投稿标题:ICERMA 2024Art…

深入理解与应用C++ Vector

1. C Vector 简介与基本使用 C 的 vector 是一个序列容器,用于表示可变大小的数组。它结合了数组的高效元素访问和动态大小调整的灵活性。与静态数组相比,vector 的大小可以根据需要自动调整,这是通过在底层使用动态数组来实现的。当新元素被…

【SAP ABAP学习资料】通过RFC接口上传图片至SAP 图片格式转换 图片大小调整

SAP图片相关: 链接: 【SAP ABAP学习资料】图片上传SAP 链接: 【SAP ABAP学习资料】屏幕图片预览 链接: 【SAP ABAP学习资料】smartforms打印图片,动态打印图片 需求: SAP上传图片只能本地电脑选择图片通过SE78或PERFORM IMPORT_BITMAP_BDS上…

计算机网络-网络层

网络层 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。 需要解决以下主要问题: 网络层向运输层提供怎样的服务网络层寻址问题路由选择问题 两种服务 IPv4地址概述 IPv4地址就是给因特网上的每一台主机(或路由器&…

Cocos 2048从创建到发布上线

一、制作2048小游戏过程 扫描体验2048小游戏 场景搭建,4X4棋盘和基础设置绘制背景板,包含预制体等信息考虑在棋盘中随机出现两个数字方块,数字为2,初始化操作滑动事件部分,让方块移动起来,每滑动一次就生成…

websevere服务器从零搭建到上线(二)|Linux上的五种IO模型

文章目录 阻塞 blocking非阻塞 non-blockingIO复用 IO multiplexing信号驱动 signal-driven异步 asynchronous拓展知识 看过上篇文章英国基本能理解本文五张图的内容websevere服务器从零搭建到上线(一)|阻塞、非阻塞、同步、异步 本文要能够在…

出差——蓝桥杯十三届2022国赛大学B组真题

问题分析 该题属于枚举类型&#xff0c;遍历所有情况选出符合条件的即可。因为只需要派两个人&#xff0c;因此采用两层循环遍历每一种情况。 AC_Code #include <bits/stdc.h> using namespace std; string str;//选择的两人 bool ok(){if(str.find("A")!-1…

java-Spring-Lombok-讲解-(一文一言)创伤是成熟的途径

高手都在孤独前进-致敬我们不悔的青春 我打算每篇文章下找一下文言警句-说不那天会用上&#x1f601;&#x1f601;&#x1f601;&#x1f601; 每篇一言 创伤是成熟的途径 希望经历过创伤的人,能更好享受当下, 爱自己胜过爱别人呀 目录 &#x1f3bb;Lombok简介 &#…