创建具有双重性的增量和加密备份

总览

尽管Vultr确实具有用于整个系统映像的备份系统,但它在块级起作用,并且需要将备份还原到VM后才能还原数据。此外,备份仅存储很短的时间,不能提供真正的增量备份解决方案。

输入Duplicity-Duplicity建立在传奇的rsync之上,并提供了存储增量备份以及通过GPG加密静态数据的功能。它符合Posix,仅在备份运行之间传输增量,因此降低了整体带宽需求。

搭建环境

术语

  • 源主机-将备份其数据的服务器。对于本教程,它的IP地址为:10.1.10.1
  • 备份主机-备份的目标服务器。对于本教程,它的IP地址为:10.1.10.2
  • / backupdir-本教程中用于备份的源主机上的源目录。您可以更改它以匹配您的环境。
  • / destdir-本教程中用于备份的备份主机上的目标目录。您可以更改它以匹配您的环境。
  • 完全备份-源数据集的完整副本。
  • 增量备份-自上次备份以来所做的所有更改的副本。

安装双重性

Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS(需要EPEL):
sudo yum install duplicity python-paramiko
Ubuntu 12.04 / Debian 7:
sudo apt-get update 
sudo apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
wget https://launchpad.net/duplicity/0.7-series/0.7.02/+download/duplicity-0.7.02.tar.gz
tar xzvf duplicity*
cd duplicity*
sudo python setup.py install

由于后端SSH库的更改,Debian 7和Ubuntu 12.04中的Duplicity软件包已损坏,因此我们必须从源代码安装。

通过运行以下命令仔细检查是否已安装Duplicity:

duplicity -v

它应该返回以下输出(版本可能有所不同):

duplicity 0.6.18

为SSH设置无密钥身份验证

下一步是在备份主机和源主机之间为SSH设置基于证书的身份验证。这将使源服务器无需输入密码即可通过SSH进入备份主机。Vultr的精彩文章解释了如何执行此操作:如何生成SSH密钥

后备

运行第一个(完整)备份

让我们运行完整备份!这会将数据的完整副本从源服务器发送到目标。

duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" /  ssh://user@backupserver:22/destdir/

您可以通过包含多个--include="[dir]"语句来添加其他文件夹。

--no-encryption指定数据是不是在目的地被加密。数据在通过SSH隧道传输时将被加密。

--exclude="**" /选项是备份仅包含列表中的所有内容(而不包含其他内容)的一个技巧。

运行增量备份

运行增量备份非常简单-只需将full标志更改为标志即可incremental

duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" /  ssh://user@backupserver:22/destdir/

自动化

编写自动化脚本

每次需要备份时都必须运行这些命令很麻烦-如果我们有脚本来为我们处理该怎么办?

完整备份脚本

运行命令。

nano /usr/local/bin/backup-full

添加以下内容。

#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" /  ssh://user@backupserver:22/destdir/
增量备份脚本
nano /usr/local/bin/backup-incremental

添加以下内容。

#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" /  ssh://user@backupserver:22/destdir/
使脚本可执行

要使脚本可执行,请运行以下命令。

chmod +x /usr/local/bin/backup-*

现在,您可以通过在Shell中运行backup-fullbackup-incremental从中执行备份。太酷了!

设定cron

让我们自动备份!通过设置cron在指定的时间运行上述脚本,我们可以确保定期执行备份。

运行以下命令。

crontab -e

将以下内容添加到文件的底部。

10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full

这将在每个星期日的1:10 AM运行完整备份,并且还将每隔一天的1:10 AM运行增量备份。

恢复

哥斯拉(Godzilla)摧毁了西雅图,我们需要能够从纽约的备用VPS取回数据!

duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/

如果我们需要还原3天前的数据:

duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/

-t 3D选项表示从三天前还原备份。类似的选项-t 1M(一个月前)或-t 5H(5个小时前)也适用。



Leave a Comment

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息