如何使用 rsync 命令

概述
在 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
时,您可能会考虑添加其他选项,但对于本文的目标 - 我们应该能够通过这些示例完成我们的目标。
您可以在这里观看教程