Linux 烹饪指南 - 云备份

作者:Marcel Gagné

弗朗索瓦,客人马上就要到了。你把露台上的桌椅都搬到哪里去了?是的,我猜你是为了腾出空间才搬走的,这引出了我的第二个问题。这些模型火箭在露台上做什么?等等。我看到贴在火箭上的那些是 USB 闪存盘吗?以自由和开放的名义,你打算发射所有这些闪存盘做什么? Quoi? 你是什么意思,你在做我让你做的事情?

Mon Dieu! 当我让你将餐厅的机器备份到我们的云端时,我不是指实际的云。 只是对别人的网络或网络资源的一种花哨说法。更准确地说,云是一种营销术语,用于描述供应商通过互联网提供的计算或存储资源。我只是在开玩笑地使用这个词,部分原因是人们似乎非常痴迷于在云端运行他们的操作系统,将他们的服务器备份到云端等等。餐厅的网络无法与谷歌或亚马逊相提并论,但我们有足够的存储空间,mon ami。我看到我们的客人到了。Vite,弗朗索瓦!快进来!

大家晚上好,欢迎来到 Chez Marcel,在这里,精致的葡萄酒与最好的 Linux 和开源软件相得益彰。请各位入座,放松一下,让弗朗索瓦收拾他的模型火箭。我们为您准备了来自新西兰的 2006 年金凯福 SP 花朵长相思白葡萄酒——酒体饱满的干白葡萄酒,风味浓郁,回味悠长……令人难忘。弗朗索瓦,把那些火箭拿到酒窖去,然后把酒拿来。 Merci, mon ami

当我的忠实服务员去取酒时,我应该告诉您,所有这些模型火箭都是对云备份解决方案的一种尝试。当然,您可以使用许多备份解决方案,从简单免费的到复杂昂贵的,以及介于两者之间的一切。然而,大多数备份系统背后的技术往往更加有限。使用经典的工具(如 tar 和 gzip)进行备份和压缩在更复杂工具的底层仍然非常常见。即使在使用网络资源时也是如此。最终,您是从一台机器备份到另一台机器。我认识的许多人,包括那些小企业主,都这样做来进行日常备份。机器 A 备份到机器 B,机器 B 备份到机器 C,机器 C 备份到机器 A。这些机器及其驱动器都是网络的一部分。嘿,即时云,而且您可能不知道您已经拥有了一个。

这就是 rsync(另一种流行的备份工具)的价值所在。顾名思义,rsync 会保持您数据的备份副本,与原始数据同步。它可以本地执行,从一个物理驱动器到另一个物理驱动器,也可以跨您的网络执行。由于只传输已修改的文件,因此该过程可能非常快速。您可以对单个文件、整个目录和子目录执行此操作,同时保持文件所有权和权限、链接、符号链接等等。 rsync 有自己的传输方式,或者您可以使用 OpenSSH 来保护传输安全,并且(当然)有一些很棒的前端图形工具可以使该过程更加流畅。

您可以在 rsync.samba.org 找到 rsync,但您可能甚至不必看得那么远。许多发行版在您安装系统时会加载它。如果没有,请检查您的安装盘,或者直接从您的发行版存储库中获取它。在我解释如何将您的数据 rsync 到您自己的个人云之前,让我向您展示从一个目录到另一个目录(或一个驱动器到另一个驱动器)创建数据同步备份是多么容易

rsync -av important_stuff/ is_backup

在上面的示例中,rsync 将目录 important_stuff 中的所有内容复制到另一个名为 is_backup 的目录(或文件夹)中。你们中的大多数人都会发现 -v 表示详细复制。 -a 选项隐藏了一些复杂性,因为它与使用 -rlptgoD 标志相同。按顺序,这意味着 rsync 应该执行递归复制;复制符号链接;保留权限、修改时间和组和所有者信息;以及,使用最后的 D,复制特殊文件(设备和块)。当您按 Enter 键时,文件会滚动显示,之后您会看到类似这样的内容

sending incremental file list
./
CookingJul08.tgz
CookingJul2008_albums.odt
CookingJul2008_albums.txt
igal_page.png
montage.png
shalbum.png
zenphoto_comment.png
zenphoto_go.png
zenphoto_login.png
zenphoto_makepass.png
zenphoto_setup.png
zenphoto_theming_comment.png
zenphoto_upload_photos.png
zenphoto_view_album.png
. . . .

sent 46059880 bytes  received 2753 bytes  6141684.40 bytes/sec
total size is 46044132  speedup is 1.00

为了完全有用,rsync 应该能够做的另一件事是删除文件。如果您要镜像文件和目录,那么您希望镜像完全代表原始文件和目录是有道理的。如果文件已被删除,您也希望在备份服务器上删除它们。这就是 --delete 参数的用武之地。使用之前的示例,让我们从原始文件中删除 tgz 文件,然后重新启动命令

$ rsync -av --delete important_stuff/ is_backup
sending incremental file list
./
deleting CookingJul08.tgz

sent 4164 bytes  received 25 bytes  8378.00 bytes/sec
total size is 41911050  speedup is 10005.03

从现在开始,两个目录将始终保持同步。在进行网络备份时,文件和目录的这种神奇同步是使用客户端和服务器设置完成的。至少一台机器必须扮演服务器的角色(尽管没有什么可以阻止您在每台机器上运行 rsync 守护程序)。服务器从名为 rsyncd.conf 的配置文件中获取有关谁可以访问哪些内容的信息。您会发现它可能位于 /etc 目录中。以下部分列表来自我的 rsync 服务器之一

hosts allow = 192.168.1.0/24
use chroot = no
max connections = 10
log file = /var/log/rsyncd.log
gid = nogroup
uid = nobody

[marcel]
    path = /media/bigdrive/backups/marcel
    read only = no
    comment = Marcel's files
[francois]
    path = /media/bigdrive/backups/francois
    read only = no
    comment = Files for the waiter

一旦您掌握了窍门,此配置文件就非常简单。备份区域由方括号中的名称标识(marcel、website、francois 等等)。那里的主要信息包括磁盘区域的路径和某种注释。请注意,我指定了read only = no,但我也可以轻松地将其添加到顶部部分(没有方括号名称的部分)。那是全局部分。放在那里的任何内容都适用于所有其他部分,但可以被覆盖。特别注意 gid 和 uid 值;这些是文件传输发生的组 ID 和用户 ID。默认值为 nobody,但您需要确保它对您的系统是正确的。我的服务器之一没有 nobody 组,但有一个 nogroup 组。

hosts allow 部分将我的本地子网标识为唯一可以进行传输的地址集。 log file 行标识一个文件,用于记录来自守护程序的信息。您还可以指定最大连接数、允许传输文件的特定用户(auth users)以及更多内容。运行man rsyncd.conf以获取完整详细信息。设置好配置后,您可以启动 rsync 守护程序,有趣的是,它与 rsync 命令本身是完全相同的程序。只需执行以下操作

rsync --daemon

就是这样。现在,是时候将此设置投入使用了。您可能想通过发出以下命令来测试您的 rsync 连接

rsync remote_host::

请注意服务器名称末尾的双冒号。假设服务器名为 thevault,结果应如下所示

$ rsync thevault::
website     All our websites
francois    Files for the waiter
marcel      Backup area for Marcel

现在,假设我在我的网站文件所在的服务器上。使用以下命令,我可以启动 rsync 来备份整个区域

rsync -av /var/www thevault::website/

building file list ...

rsync 命令的格式为rsync options source destination,这意味着我也可以从 thevault 启动命令,假设我的网站机器也在运行 rsync 守护程序。结果看起来更像这样

rsync -av localbackupdir websitemachine.dom::websites

所有这些在命令行上的工作都很棒,但是有一些工具可以使该过程更容易,特别是如果您要创建多个 rsync 备份,或者如果您想深入了解更复杂的需求,例如计划备份。桌面上的友好图形前端也可能更能激励您执行定期备份,或者在您添加重要数据并且需要“立即”备份时进行快速备份。我要向您展示的第一个工具是 Piero Orsoni 的 grsync(图 1)。

Cooking with Linux - Backing Up to the Clouds

图 1. grsync 提供了一个易于使用的界面,其中包含您可能需要的所有 rsync 选项。

在为 rsync 提供出色的前端的同时,grsync 也可用作程序命令行版本的教学工具,或者至少可以作为记忆辅助工具。 rsync 可用的几乎所有命令行选项都包含在这三个选项卡之一中:基本选项、高级选项和额外选项。使其成为学习工具的原因是,如果您将鼠标悬停在任何这些复选框上,则会出现一个工具提示,显示命令行选项以及对其功能的简要说明。

首先,单击会话下拉对话框旁边的“添加”按钮,然后输入备份的名称。您可以在此处定义许多不同的 rsync 备份,然后在稍后再次启动它们。单击“浏览”按钮会弹出标准的 Gtk2 文件浏览器窗口,您可以在其中选择本地和目标文件夹。不幸的是,您无法浏览远程系统,但是如果您已经设置了 rsync 服务器,请不要害怕。您可以按照我之前向您展示的格式手动输入它(例如,thevault::marcel/)。当您对各种选项感到满意时,单击“执行”。如果您只是 认为 您感到满意,请单击“模拟”按钮。(Marcel 主厨喜欢有幽默感的程序。)当您单击“执行”时,程序会切换到进度窗口(图 2),以便您可以查看您在过程中的位置。

Cooking with Linux - Backing Up to the Clouds

图 2. 一旦您的 grsync 备份开始,它就会切换到进度报告视图。

rsync 菜单上的下一个项目是 Magnus Loef 的 GAdmin-Rsync。 GAdmin-Rsync 使创建 rsync 备份的每个方面都成为填写空白的问题。更重要的是,该程序默认使用 SSH 创建备份,这意味着您可以将 rsync 备份设置为您可以安全 shell 访问的任何机器。这也意味着如果您有 SSH 访问权限,您实际上不需要在远程计算机上运行 rsync 守护程序。让我向您展示它的工作原理。

当您第一次启动该程序时,系统会要求您为新的备份命名(图 3)。您可以备份整个系统,也可以选择文件系统的特定文件夹。根据您要备份的内容选择一个对您有意义的名称。输入名称,然后单击“应用”以继续。

Cooking with Linux - Backing Up to the Clouds

图 3. GAdmin-Rsync 允许您定义许多备份配置,每个配置都有自己的标识符。

正如您在命令行中所见,rsync 备份可以是本地备份、远程系统备份或来自远程系统的备份。下一个窗口会查找该信息(图 4)。默认情况下,选中本地备份。要备份到远程服务器,请选择“本地到远程备份”。因为在使用 rsync 时您可以轻松地交换源和目标,所以还有第三个选项。我经常将远程到本地备份用于我的网站和远程系统。单击“前进”以继续。

Cooking with Linux - Backing Up to the Clouds

图 4. 您的下一步是定义备份的位置。

假设您选择备份到您的云端,您的下一步是输入服务器信息(图 5)。这包括您的网络服务器上的备份路径以及您的 SSH 密钥类型和长度。当您输入此信息后,单击“前进”。

Cooking with Linux - Backing Up to the Clouds

图 5. 对于远程备份,GAdmin-Rsync 使用 SSH/SCP 进行安全传输。

现在您已准备好开始 rsync 备份。单击“备份进度”选项卡以观看所有操作。

这个程序的好处在于,您可以(与 grsync 一样)存储许多备份定义,因此您可以选择在您方便时备份您的文档、音乐或数码照片。 GAdmin-Rsync 更进一步。如果您查看“备份设置”选项卡窗口的底部,您会注意到“通过 cron 在特定日期计划此备份运行”字样和一个复选框(图 6)。选中该框,然后向下滚动以选择您希望备份运行的日期。再往下一点,您也可以指定时间。

Cooking with Linux - Backing Up to the Clouds

图 6. GAdmin-Rsync 还提供了一种通过 cron 轻松计划备份的方法。

好了,mes amis,打烊时间到了,至少现在,时间是我们无法备份的东西。尽管时间已晚,但我非常确定我们可以说服弗朗索瓦在我们各奔东西之前最后一次为我们续杯。请,mes amis,举起酒杯,让我们为彼此的健康干杯。A votre santé! Bon appétit!

资源

GAdmin-Rsync: gadmintools.flippedweb.com

grsync: www.opbyte.it/grsync

rsync: rsync.samba.org

Marcel 个人网站: www.marcelgagne.com

Linux 烹饪指南: www.cookingwithlinux.com

WFTL Bytes!: wftlbytes.com

Marcel Gagné 是一位屡获殊荣的作家,居住在安大略省滑铁卢。他是 Addison-Wesley 出版的 Moving to Linux 系列丛书的作者。 Marcel 还是一位飞行员,一位前 40 强唱片骑师,创作科幻小说和奇幻小说,并且擅长折叠霸王龙折纸。您可以通过电子邮件 marcel@marcelgagne.com 与他联系。您可以从他的网站 www.marcelgagne.comwww.cookingwithlinux.com 发现许多其他内容(包括很棒的葡萄酒链接)。

加载 Disqus 评论