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

2023-11-13

介绍

Rsync,这代表远程同步,是一款远程与本地文件同步工具。它使用一种算法,通过仅移动已更改的文件部分来最大程度地减少复制的数据量。

在本教程中,我们将定义 Rsync,回顾一下使用时的语法rsync,解释如何使用 Rsync 与远程系统同步,以及其他可用选项。

先决条件

为了练习使用rsync要在本地和远程系统之间同步文件,您将需要两台计算机分别充当本地计算机和远程计算机。只要配置正确,这两台机器可以是虚拟专用服务器、虚拟机、容器或个人计算机。

如果您打算按照本指南使用服务器,那么谨慎的做法是为它们设置管理用户并在每个服务器上配置防火墙。要设置这些服务器,请按照我们的初始服务器设置指南.

无论您使用什么类型的计算机来学习本教程,您都需要在它们上创建 SSH 密钥。然后,将每台服务器的公钥复制到另一台服务器的公钥authorized_keys文件中概述的该指南的第 2 步.

本指南在运行 Ubuntu 20.04 的计算机上进行了验证,尽管它通常应该适用于运行基于 Linux 的操作系统且具有以下功能的任何计算机:rsync安装。

定义 Rsync

Rsync 是一个非常灵活的网络同步工具。由于它在 Linux 和类 Unix 系统上普遍存在,并且作为系统脚本工具很受欢迎,因此它默认包含在大多数 Linux 发行版中。

了解 Rsync 语法

语法为rsync操作方式与其他工具类似,例如ssh, scp, and cp.

首先,通过运行以下命令更改到您的主目录:

  1. cd ~

然后创建一个测试目录:

  1. mkdir dir1

创建另一个测试目录:

  1. mkdir dir2

现在添加一些测试文件:

  1. touch目录1/文件{1..100}

现在有一个名为dir1其中有 100 个空文件。通过列出文件进行确认:

  1. ls dir1
Output
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

您还有一个名为的空目录dir2。同步内容dir1 to dir2在同一系统上,您将运行rsync并使用-r标志,代表“递归”,对于目录同步是必需的:

  1. rsync -r目录1/目录2

另一种选择是使用-aflag,是一个组合标志,代表“archive”。该标志以递归方式同步并保留符号链接、特殊文件和设备文件、修改时间、组、所有者和权限。它比-r并且 是推荐使用的标志。运行与上一个示例相同的命令,这次使用-a flag:

  1. rsync -a目录1/目录2

请注意,末尾有一个斜杠 (/) 位于前两个命令语法中第一个参数的末尾,并在此处突出显示:

  1. rsync -a dir1/ dir2

这个尾部斜杠表示的内容dir1。如果没有尾部斜杠,dir1,包括目录,将被放置在dir2。结果将创建如下所示的层次结构:

~/dir2/dir1/[files]

另一个技巧是在执行之前仔细检查你的参数rsync命令。 Rsync 提供了一种通过传递-n or --dry-run选项。这-vflag,意思是“详细”,也是获得适当输出所必需的。您将结合a, n, and v以下命令中的标志:

  1. rsync -anv目录1/目录2
Output
sending incremental file list ./ file1 file10 file100 file11 file12 file13 file14 file15 file16 file17 file18 . . .

现在将该输出与删除尾部斜杠时收到的输出进行比较,如下所示:

  1. rsync -anv目录1 目录2
Output
sending incremental file list dir1/ dir1/file1 dir1/file10 dir1/file100 dir1/file11 dir1/file12 dir1/file13 dir1/file14 dir1/file15 dir1/file16 dir1/file17 dir1/file18 . . .

此输出现在表明目录本身已被传输,而不仅仅是目录中的文件。

使用 Rsync 与远程系统同步

To use rsync要与远程系统同步,您只需要在本地和远程计算机之间配置 SSH 访问,以及rsync安装在两个系统上。一旦您在两台机器之间验证了 SSH 访问权限,您就可以同步dir1使用以下语法将上一节中的文件夹复制到远程计算机。请注意,在这种情况下,您想要传输实际目录,因此您将省略尾部斜杠:

  1. rsync -a ~/dir1 username@remote_host:destination_directory

这个过程称为push操作,因为它将目录从本地系统“推送”到远程系统。相反的操作是pull,用于将远程目录同步到本地系统。如果dir1目录位于远程系统而不是本地系统上,语法如下:

  1. rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine

Like cp和类似的工具一样,源始终是第一个参数,目的地始终是第二个。

使用其他 Rsync 选项

Rsync 提供了许多用于更改实用程序默认行为的选项,例如您在上一节中了解的标志选项。

如果您要传输尚未压缩的文件(例如文本文件),则可以通过使用以下命令添加压缩来减少网络传输:-z option:

  1. rsync -az source destination

The -P标志也很有帮助。它结合了标志--progress and --partial。第一个标志提供传输进度条,第二个标志允许您恢复中断的传输:

  1. rsync -azP source destination
Output
sending incremental file list created directory destination source/ source/file1 0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=99/101) sourcefile10 0 100% 0.00kB/s 0:00:00 (xfr#2, to-chk=98/101) source/file100 0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=97/101) source/file11 0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=96/101) source/file12 0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=95/101) . . .

如果再次运行该命令,您将收到缩短的输出,因为没有进行任何更改。这说明了 Rsync 使用修改时间来确定是否已进行更改的能力:

  1. rsync -azP source destination
Output
sending incremental file list sent 818 bytes received 12 bytes 1660.00 bytes/sec total size is 0 speedup is 0.00

假设您要使用如下命令更新某些文件的修改时间:

  1. touch目录1/文件{1..10}

然后,如果你要跑rsync with -azP再次,您会在输出中注意到 Rsync 如何智能地仅重新复制已更改的文件:

  1. rsync -azP source destination
Output
sending incremental file list file1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101) file10 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101) file2 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101) file3 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101) . . .

为了保持两个目录真正同步,如果从源目录中删除文件,则有必要从目标目录中删除文件。默认情况下,rsync不会从目标目录中删除任何内容。

您可以使用以下命令更改此行为--delete选项。在使用此选项之前,您可以使用-n, the --dry-run选项,执行测试以防止不必要的数据丢失:

  1. rsync -an --delete source destination

如果您希望排除正在同步的目录内的某些文件或目录,可以通过在以下位置后面的逗号分隔列表中指定它们来实现:--exclude= option:

  1. rsync -a --exclude=pattern_to_exclude source destination

如果您有要排除的指定模式,则可以使用以下命令覆盖与不同模式匹配的文件的排除项:--include= option:

  1. rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination

最后,Rsync的--backup选项可用于存储重要文件的备份。它与--backup-dir选项,指定备份文件应存储的目录:

  1. rsync -a --delete --backup --backup-dir=/path/to/backups /path/to/source destination

结论

Rsync 可以简化网络连接上的文件传输,并增强本地目录同步的稳健性。 Rsync 的灵活性使其成为许多不同文件级操作的不错选择。

掌握 Rsync 可以让您设计复杂的备份操作,并获得对传输方式和内容的细粒度控制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Rsync 同步本地和远程目录 的相关文章

  • 如何在 Ubuntu 16.04 上添加交换空间

    介绍 提高服务器响应能力和防止应用程序内存不足错误的最简单方法之一是添加一些交换空间 在本指南中 我们将介绍如何将交换文件添加到 Ubuntu 16 04 服务器 什么是互换 Swap是硬盘驱动器上的一个区域 被指定为操作系统可以临时存储
  • 如何设置 MySQL 主主复制

    Status 已弃用 本教程已被弃用并且不再维护 Reason 本教程介绍了构建多主拓扑的过时方法 在本文最初发表时 MySQL 中尚未实现组复制 请参阅 您可以阅读最新的如何在 Ubuntu 16 04 上配置 MySQL 组复制设置多主
  • 如何在 CentOS 7 上使用 Barman 备份、恢复和迁移 PostgreSQL 数据库

    介绍 PostgreSQL是一个开源数据库平台 因其易于维护 成本效益以及与其他开源技术的简单集成而深受 Web 和移动应用程序开发人员的欢迎 维护 PostgreSQL 环境的一项关键任务是定期备份其数据库 备份是任何组织灾难恢复 DR
  • 如何在 Linux 上读取和设置环境变量和 Shell 变量

    介绍 当通过 shell 会话与服务器交互时 shell 会编译许多信息来确定其行为和对资源的访问 其中一些设置包含在配置设置中 而其他设置则由用户输入确定 shell 跟踪所有这些设置和详细信息的一种方法是通过它维护的一个称为环境 环境是
  • 如何使用 cd、pwd 和 ls 探索 Linux 服务器上的文件系统

    介绍 熟悉命令行是利用 Linux 服务器平台强大功能的第一步 这也是您可能希望在此环境中执行的基本上所有与服务器相关的活动的基本先决条件 虽然许多工具都存在图形替代方案 但学习命令行是一项技能 可以让您以大多数 GUI 图形用户界面 无法
  • 如何使用BackupPC在Ubuntu 12.04 VPS上创建备份服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Ubuntu 12.04 上添加交换

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何使用 Python WebSSH 从浏览器连接到终端

    介绍 通常 您使用终端中的命令行应用程序或包含 SSH 客户端的终端仿真器软件连接到 SSH 服务器 一些工具 例如 Python 的WebSSH 可以通过 SSH 连接并直接在 Web 浏览器中运行终端 这在许多情况下都很有用 当以具有视
  • Linux 终端简介

    介绍 本教程是 Linux 基础知识系列的第一篇 涵盖终端 Linux 命令行和执行命令的入门知识 如果您是 Linux 新手 您将需要熟悉终端 因为它是与 Linux 服务器交互的标准方式 如果您想充分利用本教程 您将需要连接和使用 Li
  • 如何在 Ubuntu 12.04 上设置 ProFTPD

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Ubuntu 18.04 上设置时间同步

    介绍 准确的计时已成为现代软件部署的关键组成部分 无论是确保以正确的顺序记录日志还是正确应用数据库更新 时间不同步都可能导致错误 数据损坏和其他难以调试的问题 Ubuntu 18 04 内置了时间同步 并且默认使用 systemd 的 ti
  • 如何在 Ubuntu VPS 上备份 PostgreSQL 数据库

    什么是 PostgreSQL PostgreSQL 是一个现代数据库管理系统 它经常用于存储和操作与网站和应用程序相关的信息 与任何类型的有价值的数据一样 实施备份方案以防止数据丢失非常重要 本指南将介绍一些备份 PostgreSQL 数据
  • 如何使用 Nmap 扫描开放端口

    介绍 对于许多崭露头角的系统管理员来说 网络是一个广泛且令人难以承受的主题 有各种层 协议和接口 以及许多必须掌握才能理解它们的工具和实用程序 在 TCP IP 和 UDP 网络中 ports是逻辑通信的端点 单个 IP 地址可能运行许多服
  • 如何在 Ubuntu 12.04 上设置 vsftpd

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Centos 6 上使用 Rsync 创建站点的异地备份

    Status 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生
  • 如何使用 passwd 和 adduser 在 Linux VPS 上管理密码

    介绍 密码和身份验证是每个用户在 Linux 环境中工作时必须处理的概念 这些主题涵盖许多不同的配置文件和工具 在本指南中 我们将探索一些基本文件 例如 etc passwd 和 etc shadow 以及用于配置身份验证的工具 例如名称恰
  • 有用的 Bash 别名和函数简介

    介绍 在命令行上操作的越多 您就越会发现您使用的大多数命令只是可用命令的很小的子集 大多数任务都是习惯性的 您可能每天都以相同的方式运行这些任务 虽然许多最常见的命令实用程序的制造商试图通过使用缩写名称来消除无关的输入 想想通过输入 ls
  • 如何编辑 Sudoers 文件

    介绍 权限分离是 Linux 和类 Unix 操作系统中实现的基本安全范例之一 普通用户以有限的权限进行操作 以减少对自己环境 而不是更广泛的操作系统 的影响范围 一个特殊的用户 称为root has 超级用户特权 这是一个管理帐户 没有普
  • SSH 要点:使用 SSH 服务器、客户端和密钥

    介绍 SSH 是一种安全协议 用作远程连接 Linux 服务器的主要方式 它通过生成远程 shell 来提供基于文本的界面 连接后 您在本地终端中输入的所有命令都会发送到远程服务器并在那里执行 在这份备忘单式的指南中 我们将介绍一些使用 S
  • Microsoft Azure 备份在保留期缩短后不会减少可用恢复点或目标使用情况

    在保留期缩短后 Microsoft Azure 备份不会减少可用恢复点或目标使用情况 我将保留期设置为 30 天 备份量约为 6 8TB 一周前 我将保留期更改为 7 天 花了几天时间总恢复点才降至 7 个 使用率仍在上升 我今天 星期一

随机推荐

  • 如何在 Linux 中截断(空)文件

    在某些情况下 您可能希望将现有文件截断 清空 至零长度 简单来说 截断文件就是删除文件内容而不删除文件 截断文件比截断文件更快更容易删除文件 重新创造它 并设置正确的权限和所有权 此外 如果该文件由进程打开 则删除该文件可能会导致使用该文件
  • 如何在 CentOS 8 上安装 PostgreSQL

    PostgreSQL 或 Postgres 是一种开源通用对象关系数据库管理系统 具有许多高级功能 允许您构建容错环境或复杂的应用程序 在本指南中 我们将讨论如何在 CentOS 8 上安装 PostgreSQL 数据库服务器 在选择安装哪
  • 如何在 Ubuntu 18.04 上安装 Pip

    Pip 是一个包管理系统 可简化用 Python 编写的软件包 例如 Python 包索引 PyPI 中的软件包 的安装和管理 Ubuntu 18 04 上默认不安装 Pip 但安装非常简单 在本教程中 我们将向您展示如何使用 Ubuntu
  • 如何在 Debian 9 上安装 Go

    Go 是 Google 创建的一种现代开源编程语言 用于构建可靠 简单 快速 高效的软件 许多流行的应用程序 包括 Kubernetes Docker Teraform 和 Grafana 都是用 Go 编写的 在本教程中 我们将引导您完成
  • 如何在 Ubuntu 20.04 上安装 Sublime Text 3

    崇高的文字是用于网络和软件开发的流行文本和源代码编辑器 它速度非常快 并且具有许多开箱即用的强大功能 可以通过安装新插件和创建自定义设置来增强和自定义该应用程序 本文介绍如何在 Ubuntu 20 04 上安装 Sublime Text 3
  • 如何在 Ubuntu 20.04 上安装 Chromium Web 浏览器

    Chromium是一款专为现代网络打造的快速 稳定且安全的浏览器 它是许多浏览器的基础 包括世界上最流行的网络浏览器谷歌浏览器 Chromium 和 Chrome 之间的主要区别在于 Chromium 是开源的 Chromium 不包含专有
  • 如何在 Debian 10 Linux 上安装 Git

    Git 是世界上最流行的分布式版本控制系统 被许多开源和商业项目使用 使用 Git 您可以与其他开发人员协作处理项目 跟踪代码更改 恢复到之前的阶段 创建分支等等 它最初是由莱纳斯 托瓦尔兹Linux内核的创建者 本教程介绍如何在 Debi
  • 如何在 CentOS 7 上安装和配置 Nagios

    Nagios 是最流行的开源监控系统之一 Nagios 保留整个 IT 基础设施的清单 并确保您的网络 服务器 应用程序 服务和流程正常运行 如果发生故障或性能不佳 Nagios 将通过各种方法发送通知警报 本教程介绍如何在 CentOS
  • 如何在 Ubuntu 18.04 上安装 Odoo 13

    Odoo 是一款流行的开源商业应用程序套件 它提供一系列应用程序 包括 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以通过多种方式安装 安装 Odoo 最简
  • 如何在 Ubuntu 18.04 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 Squid 主要用于通过缓存重复请求 过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能 本教程将引导您完成在 Ubuntu 18
  • 如何在 Ubuntu 20.04 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 它通常用于构建后端应用程序 但它也作为全栈和前端解决方案而流行 npm 是
  • 如何在 Ubuntu 20.04 上安装 Gitea

    Gitea 是一个用 Go 编写的快速且易于使用的自托管 git 服务器 它包括存储库文件编辑器 项目问题跟踪 用户管理 通知 内置 wiki 等等 Gitea是一个轻量级应用程序 可以安装在低功耗系统上 如果您正在寻找内存占用小得多的 G
  • 如何在 CentOS 8 上安装 MariaDB

    MariaDB 是一个开源关系数据库管理系统 向后兼容 是 MySQL 的二进制直接替代品 它是由 MySQL 的一些原始开发人员和社区中的许多人开发的 在本教程中 我们将解释如何在 CentOS 8 上安装和保护 MariaDB 10 3
  • 如何在 Debian 9 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它主要用于通过缓存数据库调用结果中的各种对象来加速应用程序 在本教程中 我们将引导您完成在 Debian 9 上安装和配置 Memcached 先决条件 您需要以以下身份登录具有
  • 如何在 Ubuntu 20.04 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 它可用于通过缓存重复请求 过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能 本教程介绍如何在 Ubuntu 20 04 上设置
  • Linux 中的最后一个命令

    如果您正在管理多用户系统 您通常需要知道谁 何时 从何处登录到计算机 last是一个命令行实用程序 显示有关系统用户上次登录会话的信息 当您需要跟踪用户活动或调查可能的安全漏洞时 它非常有用 本文介绍了如何使用以下方式审核登录系统的人员 l
  • 在 CentOS 8 上安装 Odoo 13

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 全部无缝集成 本教程介绍了如何安装Odoo13 来自 CentOS 8 计算机上的 Python
  • 如何在 Ubuntu 18.04 上安装 Tomcat 8.5

    Apache Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 它是当今世界上采用最广泛的应用程序和 Web 服务器之一 Tomcat 使用简
  • Java中的抽象工厂设计模式

    欢迎使用 java 示例中的抽象工厂设计模式 抽象工厂设计模式是创建模式之一 抽象工厂模式几乎类似于工厂模式但事实上它更像是工厂中的工厂 抽象工厂 If you are familiar with factory design patter
  • 如何使用 Rsync 同步本地和远程目录

    介绍 Rsync 这代表远程同步 是一款远程与本地文件同步工具 它使用一种算法 通过仅移动已更改的文件部分来最大程度地减少复制的数据量 在本教程中 我们将定义 Rsync 回顾一下使用时的语法rsync 解释如何使用 Rsync 与远程系统