如何在 Linux 上使用 Rsnapshot 创建备份如何在 Linux 上使用 Rsnapshot 创建备份如何在 Linux 上使用 Rsnapshot 创建备份如何在 Linux 上使用 Rsnapshot 创建备份
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 Rsnapshot 创建备份

Rsnapshot 是一个免费的开源实用程序,它作为 Rsync 的包装器,通过 SSH 执行本地或远程系统的增量快照。硬链接用于在备份未更改的文件时节省空间,在保留空间的同时仍向用户显示完整的文件系统。在本教程中,我们将学习如何在一些最常用的 Linux 发行版上安装和配置 Rsnapshot。

在本教程中您将学习:

  • 如何在一些最常用的 Linux 发行版上安装 rsnapshot
  • 如何配置 rsnapshots 通过 SSH 备份本地和远程计算机

安装

rsnapshot 是一个免费的开源实用程序,可在所有最常用的 Linux 发行版的官方或受信任的第三方存储库中使用。例如,要在 Fedora 上安装该实用程序,我们所要做的就是启动我们最喜欢的终端模拟器,并发出以下命令:

$ sudo dnf install rsnapshot

我们可以使用相同的命令在 RHEL(Red Hat Enterprise Linux)及其克隆上安装 Rsnapshot;然而,在这些发行版上,我们需要事先添加 EPEL 存储库作为软件源。

要在 Debian、Ubuntu 和其他基于 Debian 的发行版上执行安装,我们使用 apt 包管理器:

$ sudo apt install rsnapshot

Rsnapshot 也可以在 Archlinux“extra”存储库中找到。我们可以使用 pacman 安装它:

$ sudo pacman -S rsnapshot

一旦我们在我们最喜欢的 Linux 发行版中安装了 Rsnapshot,我们就可以使用它来创建增量备份。让我们看看如何。

快照配置

要配置 rsnapshot,我们编辑其配置文件:/etc/rsnapshot.conf。正如文件开头的大警告所述,元素之间只能使用制表符;使用空格会产生语法错误:

#################################################
#                                               #
# PLEASE BE AWARE OF THE FOLLOWING RULE:        #
#                                               #
# This file requires tabs between elements      #
#                                               #
#################################################

我们要在文件中定义的第一个指令是snapshot_root。顾名思义,它用于指定保存所有快照的目录。在以下示例中,我们使用 /snapshots 目录作为快照根目录:

# All snapshots will be stored under this root directory.
#
snapshot_root /snapshots/

如果该目录不存在,则在执行第一次备份时会自动创建该目录,除非启用了 no_create_root 指令(默认值通常为 0):

# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
#no_create_root 1

将 Rsnapshot 指向 rsync 路径

Rsnapshot 使用 rsync 来执行备份,因此我们必须通过 cmd_rsync 指令指定 rsync 二进制文件的位置。默认情况下,它设置为 /usr/bin/rsync,并且不需要更改,除非我们在其他位置安装了 rsync:

# rsync must be enabled for anything to work. This is the only command that
# must be enabled.
#
cmd_rsync /usr/bin/rsync

制定保留政策

在开始创建备份之前,我们需要建立保留策略:我们需要定义不同的备份类型,并指定应保留多少特定类型的快照。为了建立保留策略,我们使用 retain 关键字,后跟备份“类型”的名称(名称完全任意),以及指定应保留该类型的备份数量的整数。这是 Ubuntu 系统上的默认配置:

#########################################
# BACKUP LEVELS / INTERVALS             #
# Must be unique and in ascending order #
# e.g. alpha, beta, gamma, etc.         #
#########################################
retain alpha 6
retain beta 7
retain gamma 4

默认情况下,“alpha”、“beta”和“gamma”被用作标识符,但是,这些名称并不具有真正的指示性。我们可能想使用更友好和更有意义的,例如:

retain daily 6
retain weekly 7 
retain monthly 4

再次强调,名称是完全任意的,Rsnapshot 不知道它们的含义。我们在调用 rsnapshot 时指定备份类型:它只知道应保留多少特定类型的备份。

指定要备份的内容

要指定快照中应包含哪些文件和目录,我们使用 backup 指令,并传递我们要包含的路径及其所在的主机。这是一个典型的配置,其中包括 localhost 上的 /home/、/etc/ 和 /usr/local/ 目录,作为备份:

backup /home/      localhost/
backup /etc/       localhost/
backup /usr/local/ localhost/

从备份中排除和包含文件

正如直接使用 rsync 时一样,我们可能希望从备份中排除或显式包含特定文件。要在使用 rsnapshot 时定义包含和排除模式,我们使用 include 和 exclude 指令,并为每行指定一个模式:

exclude <exclude-pattern>

类似地,要指定包含模式,我们可以编写:

include <include-pattern>

作为替代策略,我们可以在专用文件中编写包含和排除模式,然后将这些文件的路径作为 include_file 和 exclude_file 指令的值传递:

include_file /path/to/include/file
exclude_file /path/to/exclude/file

验证 Rsnapshot 配置

一旦我们修改了 Rsnapshot 配置文件以满足我们的需求,我们可能需要检查我们的配置在语法上是否有效。我们可以使用 configtest 命令来做到这一点:

$ sudo rsnapshot configtest

如果一切按预期进行,该命令应返回以下消息:

Syntax OK

再次注意,rsnapshot 配置文件中只能使用选项卡。不允许使用空格:它们的使用将被视为语法错误。

测试并创建我们的第一个备份

要使 Rsnapshot 打印执行备份时将运行的命令,而不实际执行它,我们可以使用 -t 选项,如下例所示:

$ sudo rsnapshot -t daily

该命令应返回类似于以下内容的输出:

echo 6080 > /var/run/rsnapshot.pid 
mkdir -m 0755 -p /snapshots/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /home/ /snapshots/daily.0/localhost/ 
mkdir -m 0755 -p /snapshots/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/ \
    /snapshots/daily.0/localhost/ 
mkdir -m 0755 -p /snapshots/daily.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local/ /snapshots/daily.0/localhost/ 
touch /snapshots/daily.0/

要实际创建第一个备份,我们只需省略 -t 选项,因此,要创建第一个每日备份,我们将运行:

$ sudo rsnapshot daily

备份完成后,将在快照根目录下创建与我们的第一个每日备份相关的目录:

/snapshots/
└── daily.0
    └── localhost
        ├── etc
        ├── home
        └── usr

现在让我们看看如果我们要创建第二个每日备份会发生什么:

$ sudo rsnapshot -t daily

该命令返回以下输出:

bin/cp -al /snapshots/daily.0 /snapshots/daily.1 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /home/ /snapshots/daily.0/localhost/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/ \
    /snapshots/daily.0/localhost/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local/ /snapshots/daily.0/localhost/ 
touch /snapshots/daily.0/

如您所见,首先通过使用 - 运行 cp,将 daily.0 目录备份复制为 daily.1 a 和 -l 选项:前者需要保留所有文件权限和所有权,而后者则使文件被硬链接而不是复制,以保留空间。新备份将使用原始 daily.0 目录作为目标,因此它将始终托管最新的快照。

创建远程计算机的备份

我们可以使用 Rsnapshot 通过 SSH 对远程计算机执行增量备份,实现“拉”备份策略:服务器连接到客户端并从客户端“拉”文件执行备份,而不是客户端将文件推送到备份服务器。

为了备份远程计算机,我们需要做的第一件事是确保 cmd_ssh 指令存在并且在 rsnapshot 配置文件中取消注释。该指令的值是 ssh 客户端可执行文件的路径,通常安装为 /usr/bin/ssh:

cmd_ssh /usr/bin/ssh

现在,假设我们要备份 IP 192.168.122.49 的远程计算机的 /etc 目录的内容,以“ubuntu”用户身份登录。以下是我们在 rsnapshot 配置文件中写入的内容:

backup ubuntu@192.168.122.49:/etc client0

其中“client0”只是机器的标识符(可以是任何东西)。为了使备份成功,目标上应该启动并运行一个工作的 SSH 服务器,并且我们要用于连接的公钥必须已经获得授权。

结论

Rsnapshot 是一个免费的开源实用程序,它作为 Rsync 的包装器来执行增量备份。在本教程中,我们学习了如何在一些最常用的 Linux 发行版上安装和配置 rsnapshot。我们了解了如何指定要在本地和远程计算机上备份的目录、如何建立保留策略以及如何指定应保存快照的位置。

©2015-2025 艾丽卡 support@alaica.com