跳转至

加密同步镜像

通常情况下,重要的东西不会太多,但重要的东西经常需要增加和修改,除了本地有备份外,异地最好还有备份,并且备份是加密的,如何安全和高效的进行异地备份。本文将介绍一种解决方案。

方案概述

创建镜像文件,作为本地加密备份镜像文件,使用RFDK挂载该文件为虚拟分区。将重要的文件复制到该分区,完成后卸载该分区,将镜像文件复制到远程异地存储。初始化完成,后续只需进行差异备份。

优点:加密镜像的文件秘钥为随机生成,使用AES-256-XTS加密算法,且加密镜像文件的大小可以任意设置,秘钥需要妥善保管,丢失秘钥会导致加密文件无法解开。

缺点:初始化创建镜像文件大小固定,后续如果空间不够,扩展相对麻烦点,如果创建文件过大,会浪费本地和远程的存储空间。根据需要选择合适的大小。

环境准备

1、本地备份环境:Windows系统,安装RFDK,假定当前安装在d:\tool\rfdk目录下。
2、异地备份环境:Windows linux等系统,安装RFSD,用于异地同步加密镜像文件。

创建连接会话

创建会话 使用 RFDK建立和RFSD连接会话,假定当前会话名为linsrv。

创建镜像文件挂载并格式化

创建镜像并挂载 该gif演示创建c:\tmp\bfei.img, 1GB的镜像文件,启用加密挂载为E盘,然后格式化为NTFS分区。

同步备份到加密分区后并卸载

假定把需要备份的文件,复制到e:\bak目录 完成后卸载分区。 创建镜像并挂载

同步镜像文件到远程

使用rfdd命令 备份当地文件到远程异地存储,打开cmd,cd /d d:\tool\rfdk, 执行如下命令

rfdd if=c:\tmp\bfei.img of=\\\linsrv\root\bfei.img

该命令会把c:\tmp\bfei.img文件复制到远程存储的\root\bfei.img文件。

同步差异batch脚本

@echo off

rem rfdk所在目录
set RFDK=d:\tool\rfdk
rem 本地需要同步的目录 根据环境修改!!
set LOCAL_DIR=d:\bak

rem 本地同步镜像文件
set LOCAL_IMG=c:\tmp\bfei.img
rem 加密秘钥 之前随机化产生的 根据环境修改!!
set KEY=3e5d0905923c970f537dbe4ae10bf5384013d441506fde06d3194c3bac307d7f
rem 本地镜像文件挂载盘符 根据环境修改!!
set M_VOL=e
rem 加密盘备份目录
set M_DIR=%M_VOL%:\bak

rem 远程备份镜像文件  根据环境修改!!
set REMOTE_IMG=\\\linsrv\root\bfei.img

echo mount -------------------------
%RFDK%\rfdk-cli -e "mount %LOCAL_IMG%?vol_mount_point=%M_VOL%:&vol_idx=1&flags=rw&alg=aes&key=%KEY%"

echo sync -------------------------
%RFDK%\rfcp if=%LOCAL_DIR% of=%M_DIR% mode=copy_diff_size_date

echo umount -------------------------
%RFDK%\rfdk-cli -e "umount %M_VOL%:"

rem echo init...
rem %RFDK%\rfdd if=%LOCAL_IMG% of=%REMOTE_IMG% bs=256k

echo sync -------------------------
%RFDK%\rfdd if=%LOCAL_IMG% of=%REMOTE_IMG% sync_mode=auto bs=256k

每过段时间 当备份目录有变化时 执行该bat,完成差异同步备份,也可以把bat放到计划任务里,定时执行。

总结

通过周期性执行差异bat,最多只会丢失一个小周期里的数据,有本地和异地两地加密备份文件,数据丢失的可能性变得很小,甚至可以同步多个异地。