如何使用 rsync 命令

How to Use the rsync Command

概述

在 Linux 命令行中,我最喜欢的实用程序之一是 rsync,而块存储是我在 Linode 平台上最喜欢的功能之一,因此在本文中,我将把两者结合在一起 - 因为我将向您展示如何使用 rsync 将数据从一台服务器复制到另一台服务器,以备份的形式。 真正酷的是,这个例子将使用块存储。

注意:我将使用在之前的文章中设置的 Nextcloud 服务器,但即使不是 Nextcloud 也没关系 - 您可以备份您想要的任何服务器。

设置我们的环境

在 Linode 仪表板上,我创建了一个名为 “backup-server” 的实例作为此处的示例。 在您这边,请确保准备好一个 Linode 实例,以便有一个复制文件的目标位置。 此外,创建一个块存储卷来保存备份文件。 如果您尚未设置块存储,您可以查看 Linode 文档和 YouTube 频道上的其他文章和视频,以了解该过程的概述。

再次说明,在示例中,我将备份 Nextcloud 实例,但您可以随意备份您可能设置的任何服务器 - 只需确保相应地更新路径以确保一切都与您的环境匹配。 在 Nextcloud 视频中,我将数据卷设置到块存储卷上,因此两端都使用了块存储。

首先,让我们创建一个新目录,我们将在备份服务器上挂载我们的块存储卷。 我决定使用 /mnt/backup-data

sudo mkdir /mnt/backup-data

由于我在示例中使用的备份服务器存储了多个 Linode 实例的备份,因此我决定让每台服务器备份到 /mnt/backup-data 目录中的一个子目录。

sudo mkdir /mnt/backup-data/nextcloud.learnlinux.cloud

注意:我喜欢以该实例的完全限定域名来命名子目录,但这不是必需的。

继续,让我们确保我们的本地用户(或备份用户)拥有目标目录

sudo chown jay:jay /mnt/backup-data/nextcloud.learnlinux.cloud

运行该命令后,您指定的用户和组将成为目标目录的所有者,以及其下的所有内容(由于 -R 选项)。

注意:请务必更新用户名、组名和目录名以匹配您的环境。

所以现在我们要做的就是准备源服务器(我们要备份到备份服务器的服务器)。 根据源服务器的权限结构,请务必切换到 root 或您使用的任何有权访问您希望备份的所有文件的用户。 在该服务器上,我们将在执行实际备份之前执行备份的“dry run”。

测试 rsync 备份(Dry Run)

在实际执行备份之前,对 rsync 备份执行 “dry run” 非常重要 - 这将帮助您了解 rsync 在实际执行之前想要做什么。 以下命令可以用作示例

rsync --dry-run -avz  /mnt/nextcloud-data/ jay@myserver.mydomain.com:/mnt/backup-data/nextcloud.learnlinux.cloud

在该示例中,我们使用 --dry-run 选项来明确我们想要运行 dry run,然后还使用了选项 -avz,它们分别是 archive、verbose 和 compress。 当然,请务必更新命令中的所有内容以匹配您的环境,这将是我最后一次提到这一点,所以请牢记这一点。

提供的 rsync 命令将连接到目标服务器,即使它是一个 dry run。 并且输出实际上很快就过去了 - 但输出应该让您了解如果没有包含 --dry-run 选项,将会备份什么内容。 查看输出,并确保模拟摘要与您希望发生的情况相符。

执行 rsync 备份

现在您已经测试了 rsync,如果您准备好创建备份,您可以通过简单地从命令中删除 --dry-run 选项来完成。

rsync --dry-run -avz /mnt/nextcloud-data/ [jay@myserver.mydomain.com](mailto:jay@myserver.mydomain.com):/mnt/backup-data/nextcloud.learnlinux.cloud

如果成功,rsync 应该连接到备份服务器,并在指定的路径内传输文件。 如果您要备份大量文件,则该过程可能需要一段时间。

创建 rsync 备份脚本

如果您认为将来会多次使用相同的 rsync 命令,您应该考虑编写脚本。 以下是一个示例 rsync 脚本,它利用了我们一直在使用的相同示例场景

#!/bin/bash

DATE=$(date '+%F')$

rsync --dry-run -avz /mnt/nextcloud-data/ jay@myserver.mydomain.com:/mnt/backup-data/nextcloud.learnlinux.cloud/$DATE

保存文件,然后将其标记为可执行

chmod +x backup.sh

然后,当您准备好时,运行脚本

./backup.sh

这实际上是我最喜欢的运行 rsync 的方法。 使用 $DATE 变量,每天备份脚本运行时,将在备份服务器上创建一个以当前日期命名的新目录,这样您就可以立即找到特定日期的备份,以便在需要还原文件时使用。

总结

基本上就是这样 - 您可以使用 rsync 命令做更多的事情,但是这里给出的示例应该有效地帮助您将数据备份到备份服务器。 在运行 rsync 时,您可能会考虑添加其他选项,但对于本文的目标 - 我们应该能够通过这些示例完成我们的目标。

您可以在这里观看教程

Jeremy 'Jay' LaCroix 是 LearnLinuxTV 的所有者

加载 Disqus 评论