LUKS加密的磁盘/分区做增量备份存储与灾备

2015-06-25    来源:中关村在线    编辑:佚名
对于数据安全而言,一些人会在家里或者VPS上通过Linux统一密钥配置(LUKS)为硬盘驱动器加密,而这些驱动器的容量很快会增长数百GB。由此,如何在能够体验LUKS设备带来的安全有效进行数

  对于数据安全而言,一些人会在家里或者VPS上通过Linux统一密钥配置(LUKS)为硬盘驱动器加密,而这些驱动器的容量很快会增长数百GB。由此,如何在能够体验LUKS设备带来的安全有效进行数据远程备份是关键。对于非现场备份,需要在LUKS加密的设备上以块级别操作。但我们每次都需要传输备份的整个LUKS设备(以200GB容量来衡量)。很明显,难以实现来实现备份,通过xmodulo.com网站提供的方案来处理这个问题。

  一个解决方案:Bdsync

  开源工具Bdsync可以通过网络同步“块设备”。对于快速同步,Bdsync会生成并对比本地/远程块设备的块的MD5校验和,只同步差异部分。rsync在文件系统级别可以做的,Bdsync可以在块设备级别完成。

  使用Bdsync,首次备份将整个LUKS块设备拷贝到远程主机,尽管会耗费大量时间。但在初始备份后,如果在LUKS设备新建一些文件,再次备份就会很快完成,只需拷贝修改过的块。

  安装Bdsync到Linux

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

  Debian,Ubuntu或Linux Mint

  \$ sudo apt-get install git gcc libssl-dev

  \$ git clone https://github.com/TargetHolding/bdsync.git

  \$ cd bdsync

  \$ make

  \$ sudo cp bdsync /usr/local/sbin

  \$ sudo mkdir -p /usr/local/man/man1

  \$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

  Fedora或CentOS/RHEL

  \$ sudo yum install git gcc openssl-devel

  \$ git clone https://github.com/TargetHolding/bdsync.git

  \$ cd bdsync

  \$ make

  \$ sudo cp bdsync /usr/local/sbin

  \$ sudo mkdir -p /usr/local/man/man1

  \$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

  [#page_执行LUKS加密设备非现场增量备份#51#31#0#0#]

  执行LUKS加密设备非现场增量备份

  通过准备好的一个LUKS加密的块设备作为备份源(如/dev/LOCDEV)。同时,一台远程主机用以作为源设备的备份点(如/dev/REMDEV)。需要在两台系统上具有root帐号访问权限,并且设置从本地访问远程的无密码SSH访问。最后,需要安装Bdsync到两台主机上。

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

  # 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是远程主机上的目标块设备。它们可以是整个磁盘或者作为单个分区。本地Bdsync客户端的输出到gzip,用来在本地主机中创建DEV.bdsync.gz。

  对于用户首次运行上面命令,它会花费很长一段时间,取决于互联网/局域网速度,以及/dev/LOCDEV的大小。值得注意的是,必须有两个大小相同的块设备(/dev/LOCDEV和/dev/REMDEV)。

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

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

  在远程主机上执行以下命令,将补丁文件应用到/dev/REMDEV:

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

  建议使用真实数据部署Bdsync前,使用一些小分区来进行测试。保证整个设置流程和熟悉后开始备份真实数据。通过使用Bdsync来为LUKS设备实施增量备份,会节省带宽和备份时间。并通过SSH或SCP来保证所有数据传输的安全,设备自身是由LUKS加密的。

  此外,也可以通过使用可以运行bdsync的非root来改进该配置。将bdsync用于任何块设备,如LVM卷或RAID磁盘,轻易地设置Bdsync备份本地磁盘到USB驱动器上。

  执行LUKS加密设备非现场增量备份

  通过准备好的一个LUKS加密的块设备作为备份源(如/dev/LOCDEV)。同时,一台远程主机用以作为源设备的备份点(如/dev/REMDEV)。需要在两台系统上具有root帐号访问权限,并且设置从本地访问远程的无密码SSH访问。最后,需要安装Bdsync到两台主机上。

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

  # 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是远程主机上的目标块设备。它们可以是整个磁盘或者作为单个分区。本地Bdsync客户端的输出到gzip,用来在本地主机中创建DEV.bdsync.gz。

  对于用户首次运行上面命令,它会花费很长一段时间,取决于互联网/局域网速度,以及/dev/LOCDEV的大小。值得注意的是,必须有两个大小相同的块设备(/dev/LOCDEV和/dev/REMDEV)。

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

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

  在远程主机上执行以下命令,将补丁文件应用到/dev/REMDEV:

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

  建议使用真实数据部署Bdsync前,使用一些小分区来进行测试。保证整个设置流程和熟悉后开始备份真实数据。通过使用Bdsync来为LUKS设备实施增量备份,会节省带宽和备份时间。并通过SSH或SCP来保证所有数据传输的安全,设备自身是由LUKS加密的。

  此外,也可以通过使用可以运行bdsync的非root来改进该配置。将bdsync用于任何块设备,如LVM卷或RAID磁盘,轻易地设置Bdsync备份本地磁盘到USB驱动器上。

1
3