为LUKS加密的磁盘/分区做增量备份

简介:

我们中有些人出于安全原因,在家里或者VPS上通过Linux统一密钥配置(LUKS)为硬盘驱动器加密,而这些驱动器的容量很快会增长到数十或数百GB。因此,虽然我们享受着LUKS设备带来的安全感,但是我们也该开始考虑一个可能的远程备份方案了。对于安全的非现场备份,我们将需要能在LUKS加密的设备上以块级别操作的东西。因此,最后我们发现这么个状况,我们每次都需要传输想要做备份的整个LUKS设备(比如说200GB大)。很明显,这是不可行的。我们该怎么来处理这个问题呢?

一个解决方案: Bdsync

这时,一个卓越的开源工具来拯救我们了,它叫Bdsync(多亏了Rolf Fokkens)。顾名思义,Bdsync可以通过网络同步“块设备”。对于快速同步,Bdsync会生成并对比本地/远程块设备的块的MD5校验和,只同步差异部分。rsync在文件系统级别可以做的,Bdsync可以在块设备级别完成。很自然,对于LUKS加密的设备它也能工作得很好。相当地灵巧!

使用Bdsync,首次备份将拷贝整个LUKS块设备到远程主机,因而会花费大量时间来完成。然而,在初始备份后,如果我们在LUKS设备新建一些文件,再次备份就会很快完成,因为我们只需拷贝修改过的块。经典的增量备份在起作用了!

安装Bdsync到Linux

Bdsync并不包含在Linux发行版的标准仓库中,因而你需要从源代码来构建它。使用以下针对特定版本的指令来安装Bdsync及其手册页到你的系统中。

Debian,Ubuntu或Linux Mint


 
 
  1. $ sudo apt-get install git gcc libssl-dev
  2. $ git clone https://github.com/TargetHolding/bdsync.git
  3. $ cd bdsync
  4. $ make
  5. $ sudo cp bdsync /usr/local/sbin
  6. $ sudo mkdir -p /usr/local/man/man1
  7. $ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

Fedora或CentOS/RHEL


 
 
  1. $ sudo yum install git gcc openssl-devel
  2. $ git clone https://github.com/TargetHolding/bdsync.git
  3. $ cd bdsync
  4. $ make
  5. $ sudo cp bdsync /usr/local/sbin
  6. $ sudo mkdir -p /usr/local/man/man1
  7. $ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

对LUKS加密的设备实施非现场增量备份

我假定你已经准备好了一个LUKS加密的块设备作为备份源(如,/dev/LOCDEV)。同时,我假定你也有一台远程主机,用以作为源设备的备份点(如,/dev/REMDEV)。

你需要在两台系统上具有root帐号访问权限,并且设置从本地访问远程的无密码SSH访问。最后,你需要安装Bdsync到两台主机上。

要在本地主机上初始化一个远程备份进程,我们需要以root执行以下命令:


 
 
  1. # bdsync "ssh root@remote_host bdsync --server" /dev/LOCDEV /dev/REMDEV | gzip > /some_local_path/DEV.bdsync.gz

这里需要进行一些说明。Bdsync客户端将以root打开一个到远程主机的SSH连接,并执行带有--server选项的Bdsync客户端。明确说明一下,/dev/LOCDEV是我们的本地主机上的源LUKS块设备,而/dev/REMDEV是远程主机上的目标块设备。它们可以是/dev/sda(作为整个磁盘),或者/dev/sda2(作为单个分区)。本地Bdsync客户端的输出结果随后被管道输送到gzip,用来在本地主机中创建DEV.bdsync.gz(所谓的二进制补丁文件)。

你第一次运行上面的命令的时候,它会花费很长一段时间,这取决于你的互联网/局域网速度,以及/dev/LOCDEV的大小。记住,你必须有两个大小相同的块设备(/dev/LOCDEV和/dev/REMDEV)。

下一步是要将补丁文件从本地主机拷贝到远程主机。一种方式是使用scp:


 
 
  1. # scp /some_local_path/DEV.bdsync.gz root@remote_host:/remote_path

最后一步,是要在远程主机上执行以下命令,它们会将补丁文件应用到/dev/REMDEV:


 
 
  1. # gzip -d < /remote_path/DEV.bdsync.gz | bdsync --patch=/dev/DSTDEV

我推荐在使用真实数据部署Bdsync前,使用一些(没有任何重要数据)小分区来做这些测试。在你完全弄懂整个设置是如何工作之后,你可以开始备份真实数据。

尾声

小结之,我们演示了如何使用Bdsync来为LUKS设备实施增量备份。和rsync一样,每次备份只有一小部分数据,而不是整个LUKS设备,需要被推送到非现场备份点,这样会节省带宽和备份时间。剩下来,需要通过SSH或SCP来保证所有数据传输的安全,事实上设备自身是由LUKS加密的。也可以通过使用可以运行bdsync的专用用户(而非root)来改进该配置。我们也可以将bdsync用于任何块设备,如LVM卷或RAID磁盘,也可以很轻易地设置Bdsync备份本地磁盘到USB驱动器上。如你所见,它有着无限可能性!

随时分享你的想法。


原文发布时间为:2015-06-16

本文来自云栖社区合作伙伴“Linux中国”

目录
相关文章
|
10月前
|
存储 安全 网络安全
阿里云渠道商:阿里云备份支持加密吗?
在数字化时代,数据安全至关重要。阿里云备份支持全流程加密,采用信封加密、SSL传输、自动加密等技术,保障数据安全。高可靠、易操作、成本优,助力企业安心上云。
|
弹性计算 算法 Linux
使用SM4算法加密LUKS格式磁盘
本文介绍了在Anolis 8操作系统使用cryptsetup对磁盘进行分区、加密和挂载的过程。采用SM4加密算法。具体步骤包括:初始化加密卷、解锁加密分区、格式化并挂载设备。最后,展示了如何取消挂载并关闭加密卷以确保数据安全。整个过程确保了磁盘数据的安全性和隐私保护。
1274 2
使用SM4算法加密LUKS格式磁盘
|
存储 安全 Linux
如何在 Linux 上加密分区?
如何在 Linux 上加密分区?
579 0
如何在 Linux 上加密分区?
|
存储 XML 算法
kvm虚拟机磁盘使用luks加密
kvm虚拟机磁盘使用luks加密
kvm虚拟机磁盘使用luks加密
|
数据安全/隐私保护
如何自动(定时/间隔/重复)执行 同步文件、备份打包加密压缩文件
该文提供了一个工具的下载链接,分别在百度网盘和蓝奏云,提取码分别为&qwu2&quot;和&quot;2r1z&quot;。工具的使用需结合之前发布的两篇教程:《快捷自由定时重启、注销、关机》和《如何从多个文件夹内转移全部文件(忽略文件夹的结构)(进行复制)(再打包)》。操作步骤包括设定&quot;来源路径&quot;进行Zip打包,启用&quot;备份模式&quot;,然后保存批量复制任务,最后在定时器中执行已设置的批量文件复制任务。文中附有相关截图以供参考。
|
数据安全/隐私保护
带你读《商用密码技术最佳实践白皮书》——磁盘加密(LUKS)
带你读《商用密码技术最佳实践白皮书》——磁盘加密(LUKS)
429 0
|
数据安全/隐私保护 Android开发
android11.0(R) data分区节点加密控制分析
android11.0(R) data分区节点加密控制分析
1423 0
|
SQL Oracle 关系型数据库
Oracle 11g加密备份
Oracle的加密方式有三种:透明加密、密码加密、双模式加密。
|
关系型数据库 MySQL Linux
[教程]在CentOS7上配置 FTP服务器 Proftpd 支持 MySQL 虚拟用户加密认证以及磁盘限额(Quota)
本文软件采用 yum 安装,不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击。利用 Proftpd 现成的配置以及设置好的各种模块,可以实现 sftp 和 ssh 的结合,完美的实现虚拟用户加密密码存放于数据库。
5171 0
|
Linux 数据安全/隐私保护