Banana Backups

作者:Kyle Rankin

在 2016 年 9 月刊中,我写了一篇文章,名为 “Papa's Got a Brand New NAS”,其中我描述了如何用一个小型、低功耗的 ARM 设备——Odroid XU4 替换我的机架式设备。在确定该解决方案之前,我尝试了其他几种方案,包括一对 Banana Pi 计算机——类似于 Raspberry Pi 的小型单板计算机,但板载千兆网络和 SATA2 控制器。最后,我决定使用一个更高性能的单板,并使用带有 RAID 的 USB3 磁盘盒,而不是构建一个集群,其中每个 Banana Pi 都连接一个磁盘。由于在这次实验后我剩下了两个 Banana Pi,我决定利用它们,因此在本文中,我将描述如何将其中一个变成一个不错的小型备份服务器。

硬件

虽然 Raspberry Pi 非常流行且有用,如果您想要一台小型、低功耗、廉价的计算机,但作为网络备份服务器,它们也有缺点。主要的缺点之一是磁盘和网络速度性能低下。Raspberry Pi 的网络速度最高为 100Mbit,如果您想添加硬盘驱动器,则仅提供 USB2 端口。这些限制是我最初寻找家庭 NAS 其他解决方案的原因,这也是 Banana Pi 具有优势的一个领域。即使现代 Raspberry Pi 3 具有更快的 CPU,旧的 Banana Pi 在网络和磁盘 I/O 方面仍然胜过它。这使其非常适合作为家庭网络备份的独立系统,具体取决于您的需求。

就我而言,我没有备份 TB 级媒体;我只是想要服务器和工作站的裸机备份以及重要文档的备份。备份的大小很重要,因为 Banana Pi 仅限于单个 SATA2 端口,并且主板本身只能为 2.5 英寸笔记本电脑驱动器供电。因此,如果您想坚持本地供电,则只能使用 2.5 英寸硬盘驱动器尺寸。也就是说,如果您愿意在外部供电的 SATA2 硬盘盒上挥霍,则可以使用 3.5 英寸驱动器代替。就我而言,我碰巧有一个旧的 2.5 英寸 500Gb 笔记本电脑驱动器,自从我用 SSD 替换后就闲置了。请注意,您可能需要订购合适的 SATA2 电缆,以将硬盘驱动器与 Banana Pi 连接——它通常不随板一起提供。

虽然我可以想象您可以将主板和笔记本电脑驱动器放在架子上,但我希望对其进行更多保护。由于我有一台 3D 打印机,自然而然地我去了 Thingiverse,看看它是否有 Banana Pi 的外壳。事实证明,有人制作了我需要的东西——一个 Banana Pi 外壳,它还具有 2.5 英寸硬盘驱动器的安装点。我打印出了外壳(自然是黄色的),并且能够毫无问题地安装主板和笔记本电脑驱动器。

图 1. 带盖的 Banana Pi NAS 外壳

图 2. 不带盖的 Banana Pi NAS 外壳

软件

多年来,我一直是 BackupPC 的粉丝,将其作为备份解决方案。它几乎适用于任何 Linux 发行版,支持基于 SMB 和 rsync 的备份,并且它提供了一个友好的 Web 界面,使用户可以轻松导航到自己的备份并执行自己的还原,而无需管理员参与。更重要的是,它在组合完整备份和增量备份方面很智能,并且它利用硬链接和压缩,因此磁盘空间利用率非常高。您可以最终存储数周的备份,而占用的空间不会比一个完整备份可能占用的空间多多少。

BackupPC 已经为基于 Debian 的 Banana Pi 发行版打包,因此很容易安装。就我而言,我之前已经在我的旧服务器上使用 BackupPC,因此我能够将我的配置和备份存档复制到这台新服务器,并且我已准备就绪。显然,在您的情况下,您将需要按照 BackupPC 的文档添加您自己的用户帐户和备份作业。这非常简单,您可以完全在命令行中使用配置文件或通过 Web UI 进行配置。

我对 Banana Pi 的先前 BackupPC 配置文件做了一个调整。事实证明,Banana Pi 在板上有一个绿色 LED,您可以从 Linux 控制它。LED 足够亮,我可以通过为我的外壳打印的半透明塑料盖看到它,所以我认为在备份进行时将其打开会很方便。我最终创建了两个基本脚本来控制 LED。首先,我创建了 /usr/local/bin/led_on


#!/bin/bash

echo 1 > /sys/class/leds/bananapi\:green\:usr/brightness

然后我创建了相应的 /usr/local/bin/led_off 脚本


#!/bin/bash

echo 0 > /sys/class/leds/bananapi\:green\:usr/brightness

然后我使用 chmod +x 为这两个脚本添加了执行权限,并使用 sudo 对它们进行了测试(您需要 root 权限才能写入该设备),果然,LED 关闭和打开了。

为了让 BackupPC 使用这些脚本,首先我必须确保本地 backuppc 用户可以以 root 身份执行它们,因此我在我的 /etc/sudoers 文件中添加了以下行


backuppc ALL=(root) NOPASSWD: /usr/local/bin/led_on,
 ↪/usr/local/bin/led_off

最后,我修改了我的 /etc/backuppc/config.pl 文件,将 led_on 脚本设置为 BackupPC 在开始备份之前运行的命令,并将 led_off 设置为在备份完成后运行的命令。要打开 LED,我更改了以下 BackupPC 配置设置


$Conf{DumpPreUserCmd}     = 'sudo /usr/local/bin/led_on';
$Conf{DumpPreShareCmd}    = 'sudo /usr/local/bin/led_on';
$Conf{RestorePreUserCmd}  = 'sudo /usr/local/bin/led_on';
$Conf{ArchivePreUserCmd}  = 'sudo /usr/local/bin/led_on';

要关闭 LED,我更新了相应的备份后设置


$Conf{DumpPostUserCmd}    = 'sudo /usr/local/bin/led_off';
$Conf{DumpPostShareCmd}   = 'sudo /usr/local/bin/led_off';
$Conf{RestorePostUserCmd} = 'sudo /usr/local/bin/led_off';
$Conf{ArchivePostUserCmd} = 'sudo /usr/local/bin/led_off';

一旦我重新加载了 BackupPC 服务,LED 就工作正常了,我可以一目了然地知道备份是否正在进行中。这种本地备份设置的好处是,它消耗的电量很少,而且除了硬盘驱动器的噪音外,它是静音的。

Kyle Rankin 是 Linux Journal 的技术编辑和专栏作家,也是 Purism 的首席安全官。他是 Linux Hardening in Hostile NetworksDevOps TroubleshootingThe Official Ubuntu Server BookKnoppix HacksKnoppix Pocket ReferenceLinux Multimedia HacksUbuntu Hacks 的作者,也是许多其他 O'Reilly 书籍的贡献者。Rankin 经常就安全和开源软件发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。您可以在 @kylerankin 上关注他。

加载 Disqus 评论