如何在 Linux 上使用 Rsync 同步本地和远程目录

devtools/2024/12/27 10:40:02/

简介

Rsync,即 remote sync 的缩写,是一个文件传输和同步工具,可以在两个目录之间安全地复制和同步文件。其中一个必须是源目录,另一个是目标目录,目标目录也可以是远程的。它使用一种增量传输算法,只发送源文件和目标文件或文件夹之间的差异。因此,它是一个带宽效率高的工具,也是增量数据传输的理想选择。

Rsync 是现在由于安全漏洞问题而被弃用的 scp 命令的完美替代品。Rsync 广泛用于异地备份和镜像。

默认情况下,rsync 预装在现代 Linux 发行版中,因此不需要安装。在本文中,我们将探讨如何使用 rsync 工具传输文件并同步本地和远程目录。本教程将手把手教你如何在 Linux 服务器上部署 Rsync。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

第一步:检查 Rsync 是否安装

如前所述,rsync 通常预装在大多数现代 Linux 发行版中,因此无需安装。但为了确保,你可以运行以下命令来确认 rsync 是否已安装:

rsync --version

如果 rsync 已安装,你将会看到 rsync 的版本信息。

第二步:使用 Rsync 在本地同步文件

rsync 的语法与其他工具(如 scp 和 cp)非常相似。

为了演示,我们将创建两个目录:mydir1 作为源目录,mydir2 作为目标目录。

mkdir mydir1mkdir mydir2

接下来,我们将导航到 mydir1 中,并创建 10 个空的文本文件,稍后我们将把它们复制并同步到作为目标文件夹的 mydir2 中。

cd mydir1touch file{1..10}.txt

要确认文件的存在,请运行以下 ls 命令:

ls -l

要将文件从 mydir1 复制到 mydir2,请运行以下 rsync 命令:

rsync -vr mydir1/ mydir2
  • v-verbose 选项会在终端上打印详细输出,详细说明文件传输过程。显示的信息包括正在复制的文件以及总文件大小和使用的带宽的摘要。
  • r-recursive 选项会递归复制目录中的所有文件和子目录。

如果指定的目标文件夹不存在,则会自动创建一个,rsync 会将所有数据复制到其中。

注意:

请注意源文件末尾的斜杠 ( / )。这表示只会复制目录的内容。如果没有末尾的斜杠,rsync 命令会复制整个 mydir1 目录,而不是其内容。

下面是一个代码片段,显示了省略末尾斜杠时会发生什么。整个目录及其内容会被复制到里面。

  • r 的一个完美替代方案是 a-archive)标志。该选项递归地同步文件,并保留文件属性,如文件权限、组和用户所有权、修改时间、符号链接等。它是最推荐使用的选项。

可以使用 -a 选项而不是 -r 标志。

$ rsync -av mydir1/ mydir2

第三步:排除特定文件不被复制

要排除特定文件不被传输,请传递 --exclude 选项,如下所示:

rsync -av --exclude=file source-directory/ destination-directory

例如,要排除 file1.txt 不被复制到目标目录,我们将运行以下命令:

rsync -av --exclude=file1.txt mydir1/ mydir2

要排除多个文件,请将它们用大括号括起来,并用逗号分隔,中间不留空格。在下面的示例中,文件 file1.txtfile2.txt 已从文件传输操作中排除。

rsync -av --exclude={file1.txt,file2.txt} mydir1/ mydir2

第四步:排除特定目录不被复制

排除特定目录与排除文件类似。只需传递 --exclude 选项,如下所示:

rsync -av --exclude=dir source-directory/ destination-directory

假设我们在源目录中有一个名为 data 的目录。要排除它不被复制,我们将运行以下命令:

rsync -av --exclude=data mydir1/ mydir2

要排除多个目录,请在花括号内指定它们,并用逗号分隔,中间不留空格。在下面的示例中,目录 datadata2 已从传输操作中排除。

rsync -av --exclude={data,data2} mydir1/ mydir2

第五步:使用 Rsync 执行干运行

在执行 rsync 命令之前,你可以传递 -n--dry-run 选项来检查命令的运行方式。这只是执行文件传输的模拟,不执行任何操作。为了充分利用这一点,你可以在一个命令中组合 anv 标志,如下所示。

$ rsync -avn mydir1/ mydir2

在底部,你会找到 DRY RUN 标签,表明命令执行只是文件传输过程的模拟。

第六步:使用 Rsync 远程同步文件

rsync 工具还可以将文件和目录传输到远程系统,反之亦然。要使此功能正常工作,必须满足一些条件。

首先,rsync 实用程序需要存在于两个系统(本地和远程)上。此外,由于 rsync 使用 SSH 连接到远程主机,你需要在两个系统之间配置无密码 SSH 登录。

第七步:将文件推送到远程位置

如前所述,rsync 可以将文件从本地系统传输到远程系统,反之亦然。

将文件从本地系统复制到远程系统称为推送操作,因为你实际上是将文件“推送”或同步到远程系统。它采用以下语法:

rsync [options] source [user@host-ip]:dest-on-remote-machine

与此相反的是拉取操作,因为你是从远程系统检索或“拉取”文件到本地系统。其语法如下:

rsync [options] [user@host-ip]:source dest-on-local-machine

例如,要将名为 sample.txt 的文件从本地计算机复制或同步到位于远程系统上的名为 bob 的用户的主目录,请运行如下所示的命令。

rsync -av sample.txt bob@173.82.232.55:/home/bob

文件传输完成后,使用以下命令确认文件的存在。

ssh bob@173.82.232.55 ls -l /home/bob

注意:

如果远程系统上存在该文件,它将被覆盖。要使用不同的名称保存该文件,请指定新名称,如下所示。

rsync -av sample.txt bob@173.82.232.55:/home/bob/sample2.txt

第八步:从远程位置拉取文件

要将名为 remote-file.txt 的文件从 SS 远程系统复制到本地系统上名为 data 的目录,请运行以下命令:

rsync -av bob@173.82.232.55:remote-file.txt  /home/cherry/data

第九步:远程文件复制语法

通过 SSH 使用 rsync 传输目录的语法相同。

回想一下,rsync 会以不同的方式处理带有末尾斜杠的源目录。如果带有末尾斜杠,rsync 只会将源目录的内容复制到目标目录。如果省略末尾的斜杠,则会将整个源目录复制到目标目录中。因此,如果你想复制整个源目录,可以考虑省略末尾的斜杠。

例如,要将 mydir1 从本地计算机复制到远程计算机,你可以运行以下命令:

rsync -av mydir1 bob@173.82.232.55:/home/bob/

从输出中,你可以看到整个目录已复制到远程系统。

第十步:同步本地和远程目录

要同步本地和远程目录,请使用 --delete 选项。为了演示这一点,我们将在 mydir1 文件夹中创建一个名为 cherry.txt 的新文件。

touch mydir/cherry.txt

接下来,我们将同步 mydir1 文件夹中所做的更改,使其与远程计算机上的更改保持一致,如下所示。

rsync -av --delete mydir1 bob@173.82.232.55:/home/bob/

在同步期间,只有新文件会添加到远程文件夹中,其他所有内容保持不变。

警告:

使用 --delete 选项时要格外小心,因为它会删除目标目录中在源目录中不存在的文件。

为了演示这一点,我们将删除源文件夹中的一些文件。

rm mydir1/file{6..10}.txt

当目录同步时,刚刚在源目录中删除的缺失文件也会在目标文件夹中删除,以恢复奇偶校验。

rsync -av --delete mydir1 bob@173.82.232.55:/home/bob/

你可以通过列出远程目录中的文件来确认这一点,如下所示。

ssh bob@173.82.232.55 ls -l /home/bob/mydir1

第十一步:压缩文件并查看传输进度

你可以与 rsync 一起使用的其他有用选项是 -z-P

  • z 选项会在文件传输期间压缩文件数据,从而优化带宽使用率,而 P 选项会显示进度条。这两个选项可以组合使用,如下所示。
rsync -azP mydir1 bob@173.82.232.55:/home/bob/data

结尾

Rsync 是一种多功能且安全的工具,可以简化 TCP/IP 网络上的文件传输和同步。它可以在本地复制,也可以通过远程 shell 复制到另一个主机/从另一个主机复制。它提供了许多选项,可以控制其使用的各个方面。

有关 rsync 工具的更多信息,请查看在线手册页。或者,你可以从命令行访问手册页,如下所示。

man rsync

此外,你可以通过查看 rsync 帮助页面来探索更多命令行选项,如下所示。

rsync --help

以上就是全部内容。在本文中,我们讨论了 rsync 工具,并通过示例演示了如何在本地以及两个 Linux 系统之间传输和同步文件。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site


http://www.ppmy.cn/devtools/145790.html

相关文章

论文解读 | 《濒危药用真菌桑黄合成功能性多糖和黄酮的研究》

论文作者:马小魁,张红 桑黄作为传统中药已有 2000 多年的历史,其主要用于活血、止血、止泻、脾虚泄泻等,现代技术检测分析发现桑黄含有多糖、黄酮、萜类化合物和甾体类化合物等活性成分,这种大型药用真菌,…

kong网关使用pre-function插件,改写接口的返回数据

一、背景 kong作为api网关,除了反向代理后端服务外,还可对接口进行预处理。 比如本文提及的一个小功能,根据http header某个字段的值,等于多少的时候,返回一个固定的报文。 使用到的kong插件是pre-function。 除了上…

MongoDB数据库安全

MongoDB数据库安全 一、身份验证 内置身份验证机制 MongoDB支持多种身份验证方式。最常见的是基于用户名和密码的身份验证。在MongoDB中,可以通过创建用户并分配角色来控制对数据库的访问。例如,在mongo shell中,可以使用use admin切换到ad…

Webpack在Vue CLI中的应用

webpack 作为目前最流行的项目打包工具,被广泛使用于项目的构建和开发过程中,其实说它是打包工具有点大材小用了,我个人认为它是一个集前端自动化、模块化、组件化于一体的可拓展系统,你可以根据自己的需要来进行一系列的配置和安…

Ubuntu vi(vim)编辑器配置一键补全main函数

1.打开对应的配置文件 vi ~/.vim/snippets/c.snippets 2.按G将光标定位到文件末尾 3.按i进入插入模式 以tab键开头插入下的内容,空行也要加 tab键 4.:wq保存退出 5.再打开任意一个新的 .c文件后,插入模式输入 main 然后按tal键就能补全了

天天 AI-241226:今日热点-OpenAI正研发实体机器人,终结者时代还是来了

2AGI.NET | 探索 AI 无限潜力,2AGI 为您带来最前沿资讯。 2AGI.NET:天天AI-20241225 AI技术正在多个领域实现突破,从实体机器人的研发到企业级生成式AI的应用趋势,再到AI安全平台的融资消息,每一项技术的发展都在推动着…

【Spring】基于XML的Spring容器配置—— <import>标签的使用

Spring容器是Spring框架的核心部分&#xff0c;负责管理应用程序中的对象及其生命周期。Spring容器的配置方式有多种&#xff0c;其中基于XML的配置方式仍然被广泛使用&#xff0c;尤其是在一些老旧项目中。本文将详细介绍Spring容器配置中的<import>标签的使用&#xff…

散斑/横向剪切/迈克尔逊/干涉条纹仿真技术分析

摘要 本博文提供了多种数据类型的干涉条纹仿真&#xff0c;并展示了它们对应的散斑干涉条纹。还分别给出了横向剪切干涉以及剪切散斑干涉条纹的仿真。 一、迈克尔逊干涉与散斑干涉仿真 下图为干涉条纹与对应的散斑干涉条纹的仿真示意图。其中&#xff0c;干涉条纹可认为是源…