如何选择适合您的VPS一个有效的备份策略

当任何一种重要的数据时,您实现备份方案至关重要。有许多不同的方式来备份数据上的定位系统。在本指南中,我们将讨论一些方法,你可以备份你的数据和讨论的优点

介绍


在数字环境中存储工作和数据时,一个重要的考虑因素是如何确保在出现问题时您的信息可用。这可能意味着许多不同的事情,这取决于您使用的应用程序,立即进行故障转移的重要性以及您预期的什么样的问题。 在本指南中,我们将讨论一些用于提供备份和数据冗余的不同方法。因为不同的用例需要不同的解决方案,我们不能给你一个一刀切的答案,但你会了解什么是重要的在不同的场景和什么实现(或实施)最适合你的操作。 在本指南的第一部分,我们将讨论您可以使用的不同备份解决方案。我们将讨论每个的相对优点,以便您可以选择适合您的环境的计划。在第二部分,我们将讨论冗余选项。

冗余和备份之间有什么区别?


术语冗余备用的定义通常是重叠的,并且在许多情况下,相混淆。这是两个截然不同的概念,是相关的,但是不同的。一些解决方案提供两者。

冗余


冗余数据意味着有一个系统的问题的情况下,立即故障切换 。故障转移意味着如果一组数据变得不可用,另一个完美的副本将立即交换到生产中以代替它。这导致几乎没有可察觉的停机时间,并且应用或网站可以继续服务请求,如同什么也没有发生。在此期间,系统管理员(在这种情况下,您)有机会解决问题,并使系统恢复到完全可操作状态。 虽然这似乎也可以作为一个伟大的备份解决方案,这是一个危险的谬误。冗余不提供对影响整个机器或系统的故障的保护。例如,如果您配置了镜像RAID(如RAID 1),则您的数据是冗余的,因为如果一个驱动器发生故障,另一个驱动器仍然可用。但是,如果机器本身失败,您的所有数据可能会丢失。 这种类型的设置的另一个缺点是每个操作都在数据的所有副本上完成。这包括恶意或意外操作。真正的备份解决方案将允许您从数据已知为好的上一个点还原。

备份


正如我们已经提到的,必须为您的重要数据维护功能备份。根据您的情况,这可能意味着备份应用程序或用户数据,或整个网站或计算机。备份背后的想法是,在系统,计算机或数据丢失的情况下,您可以恢复,重新部署或以其他方式访问您的数据。从备份还原可能需要停机,但这可能意味着从一天前的某个点开始,从头开始的差异。任何你不能承受的东西,根据定义,应该备份。 在方法方面,有相当多的不同级别的备份。这些可以根据需要分层以解决不同类型的问题。例如,您可以在修改配置文件之前对其进行备份,以便在出现问题时可以轻松恢复到旧设置。这是您正在主动监视的小更改的理想选择。然而,这种设置在磁盘故障或任何更复杂的情况下都会失败。您还应该定期,自动备份到远程位置。 备份本身不提供自动故障转移。这意味着您的故障可能不会向您收取任何数据(假设您的备份是100%最新的),但它们可能会花费正常运行时间。这是为什么冗余和备份最常用于串联,而不是互相排除的一个原因。

文件级备份


最熟悉的备份形式之一是文件级备份。此类型的备份使用正常的文件系统级复制工具将文件传输到另一个位置或设备。

如何使用cp命令


备份Linux机器的最简单的形式,像你的VPS,与cp命令。这只是将文件从一个本地位置复制到另一个本地位置。在本地计算机上,您可以挂载可移动驱动器,然后将文件复制到其中:
mount /dev/sdc /mnt/my-backup
cp -a /etc/* /mnt/my-backup
umount /dev/sdc
这个例子安装了一个可移动磁盘,然后复制/etc目录到磁盘。然后卸载驱动器,它可以存储在其他地方。

如何使用Rsync


到一个更好的选择cprsync命令,它可以用来以更大的灵活性进行本地备份。我们可以使用rsync对这些命令执行与上面相同的操作:
mount /dev/sdc /mnt/my-backup
rsync -azvP /etc/* /mnt/my-backup
umount /dev/sdc
虽然这是简单的,到目前为止,你会很快意识到,本地文件系统上的备份是繁琐和有问题的。如果要在发生盗窃或火灾时保留数据,必须物理连接和分离备份驱动器并将其传输到其他位置。您可以通过使用联网备份实现许多相同的优势。 Rsync可以像完成本地备份一样轻松地执行远程备份。您只需要使用替代语法。这将在您可以SSH进入的任何主机上工作,只要rsync安装在两端:
rsync -azvP /etc/* username@remote_host:/backup/
这将备份本地机器的/etc目录上的目录remote_host位于/backup 。如果您有权限写入此目录并且有可用空间,则此操作将成功。 有关更多信息, 如何使用rsync备份 ,请点击这里。

如何使用其他备份工具


虽然cprsync简单,可以很容易地使用,他们并不总是理想的解决方案。要自动备份,您需要脚本化这些实用程序,并编写旋转和其他细节所需的任何代码。 幸运的是,有些实用程序很容易执行更复杂的备份过程。 Bacula Bacula是一个复杂,灵活的解决方案,利用客户端服务器模型备份主机。 Bacula分离了客户端,备份位置和导向器(编排实际备份的组件)的想法。它还将每个备份任务配置为称为“作业”的单元。 这允许极其颗粒和柔性的配置。您可以将多个客户端备份到一个存储设备,将一个客户端备份到多个存储设备,并通过添加节点或调整其详细信息来快速轻松地修改备份方案。它在网络环境中运行良好,可扩展和模块化,非常适合备份跨多个机器的站点或应用程序。 要了解更多关于如何配置Bacula的备份服务器以及如何备份远程系统与Bacula的 ,访问这些链接。 备份PC 另一个流行的解决方案是BackupPC。 BackupPC可用于轻松备份Linux和Windows系统。它安装在将充当备份服务器的机器或VPS上。然后,此服务器使用常规文件传输方法从其客户端“拉”数据。 此设置提供了在一个集中式机器上安装所有相关软件包的优点。唯一必要的客户端配置是允许备份服务器SSH访问。这可以方便地配置,并与DigitalOcean,可以嵌入backuppc的服务器的SSH密钥到的客户,您部署 。这将允许您轻松地配置来自备份服务器的备份,并清洁地部署生产环境,而无需其他软件。 要了解如何安装和服务器上使用backuppc的 ,请点击此处。 表里不一 重复性是传统工具的另一个很好的替代方法。 Duplicity主要的区别是它使用GPG加密来传输和存储数据。这有一些显着的优点。 使用GPG加密进行文件备份的明显好处是数据不以纯文本存储。只有GPG密钥的所有者才能解密数据。这提供了一定程度的安全性,以抵消当您的数据存储在多个位置时所需的安全措施的膨胀。 对于那些不定期使用GPG的人来说,其他好处可能并不明显:每笔交易都被证实是完全准确的。 GPG强制执行严格的哈希检查,以确保在传输期间没有数据丢失。这意味着,当您从备份还原数据时,您将遇到文件损坏的问题的可能性显着降低。 要了解如何启用GPG加密备份 ,请点击此链接。

块级备份


对文件级备份稍微不常见,但重要的替代方法是块级备份。这种备份方式也称为“映像”,因为它可以用于复制和恢复整个设备。块级备份允许您在比文件更深的级别上进行复制。虽然基于文件的备份可能会将file1,file2和file3复制到备份位置,但基于块的备份系统会复制这些文件所在的整个“块”。解释相同概念的另一种方式是说块级备份将比特之后的信息复制。他们不关心可能由那些字节来表示(但文件通过这个过程被转移完好)抽象文件。 块级备份的一个优点是它们通常更快。虽然基于文件的备份通常为每个单独的文件启动新的传输,但基于块的备份将传输块,这通常较大,这意味着需要启动较少的传输才能完成复制。

使用dd执行块级备份


执行块级备份的最简单的方法可能是用dd工具。这个软件是非常灵活的,但它允许我们将信息逐位复制到一个新的位置。这意味着我们可以将分区或磁盘备份到单个文件或裸设备,而无需任何初步步骤。 备份分区或磁盘的最基本的方法是使用dd这样:
dd if=/path/of/original/device of=/path/to/place/backup
在这种情况下, if=指定输入设备或位置。 的of=指示输出文件或位置。记住这种区别是非常重要的,因为如果这些是相反的,擦拭一个完整的磁盘是微不足道的。 如果你想备份包含您的文件,它位于该分区/dev/sda3 ,你可以创建一个这样的映像文件:
dd if=/dev/sda3 of=~/documents.img
还有几个其他块级备份解决方案可用于Linux机器,但我们不在这里讨论它们。

版本控制备份


备份数据的一个主要原因是能够在发生不需要的更改或删除的情况下恢复文件的先前版本。虽然到目前为止所提到的所有备份机制在一定程度上提供了这一点,但您可以使用一些额外的工具实现更健壮的系统。 手动完成此操作的方法是在编辑之前创建一个备份文件,如下所示:
cp file1 file1.bak
nano file1
您甚至可以通过每次使用编辑器修改文件时创建带时间戳的隐藏文件来自动化此过程。例如,你可以把这个在你~/.bashrc文件中:
nano() { cp $1 .${1}.`date +%y-%m-%d_%H.%M.%S`.bak; /usr/bin/nano $1; }
现在当你调用“nano”命令时,它会自动创建备份。 这将提供一定程度的备份,但是非常脆弱,并可以快速填满磁盘,如果你经常编辑文件。这不是一个很好的解决方案,可能会比手动复制要编辑的文件更糟糕。 该解决了许多在这种设计中固有的问题的一个替代方案是使用git ,这是特别版本控制系统。虽然它可能不明显,你可以使用git来控制几乎任何类型的文件。 您可以立即在您的主目录中创建一个git存储库,只需键入以下内容:
cd ~
git init
你可能需要调整这里的设置以排除某些文件,但一般来说,它立即创建复杂的版本。然后,您可以添加您的目录的内容,并提交这些文件:
git add .
git commit -m "Initializing home directory"
您可以使用git的内置系统轻松地推送到远程位置:
git remote add backup_server git://backup_server/path/to/project
git push backup_server master
这不是一个伟大的系统自己备份,但结合另一个备份系统,这种类型的版本控制可以提供非常细粒度的控制您所做的更改。 要了解更多关于如何使用git,请查看以下链接。

VPS级备份


虽然自己管理备份很重要,但DigitalOcean还提供一些机制来补充您自己的备份。 我们有一个备份功能,定期执行自动备份已启用此服务的Droplet。您可以通过选中“备份”复选框在Droplet创建期间启用此功能: 数字海洋备份 这将备份您的整个VPS图像。这意味着您可以轻松地从备份中重新部署,或将其用作新Droplet的基础。 对于系统的一次性映像,您还可以创建快照。这些工作方式与备份类似,但不是自动执行的。虽然可以拍摄正在运行的系统的快照,但通常最好关闭以确保文件系统处于一致状态。从2016年10月开始,快照每月每GB的价格为0.05美元,基于文件系统中的利用空间量。您可以通过转到您的Droplet并从左侧菜单中选择“快照”来创建它们: 数字海洋快照 要了解更多关于DigitalOcean备份和快照 ,请点击这里。

继续


在本文中,我们主要讨论不同的备份概念和解决方案。在第2部分 ,我们将要介绍一些选项来启用冗余。