IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    云盘加密备份:一个高效的目录加密脚本

    lesca发表于 2021-04-12 09:11:34
    love 0

    场景

    • 将重要的照片、文件等备份到云盘,有一定泄露风险。
    • 为了将重要文件进行加密,可以使用gpg或者openssl命令的对称加密方式(更高效率)
    • 然而,原生命令不支持对目录及子目录进行批量加密

    目的

    • 使用一种高效的方法,对一个目录进行递归读取后加密
    • 如果文件大小超过2GB,则对文件进行分段处理
      1. 某些云服务可能对文件大小和下载速度进行限制,分段大小请根据自己的云服务自行调节
      2. 不建议使用过大的分段,一旦损坏将造成整个分段的文件丢失
    • 解密时,如果遇到损坏的分段,则仅该分段无法解密,不影响后续分段

    使用方法:

    • 将以下脚本中您所需要的函数放入 .bashrc 或者复制所需函数到终端,粘贴运行即可导入
    • Windows 平台可以使用 WSL

    使用说明

    • passfile – 密码文件。只读取第一行,长度/复杂度任意。该文件必须位于命令执行目录,即工作目录。
    • sslen / sslde – 使用 openssl 方式进行加密、解密。效率较好。推荐
    • gpgen / gpgde – 使用 gpg 命令进行加密、解密。相比openssl效率较低。

    脚本

    # openssl - better performace
    sslen() { [ "$2" = "" ] && des=encrypted || des=$2 ; mkdir -p $des ; tar -c $1 | openssl enc -aes-256-cbc -pass file:passfile | split -a3 -d -b 2G - $des/`basename $1`.part ; }
    sslde() { [ "$2" = "" ] && des=decrypted || des=$2 ; mkdir -p $des ; cat $1* | openssl enc -aes-256-cbc -d -pass file:passfile | tar -xC $des ; }
    
    

    用法举例

    # 加密目录 输出文件存放到 encrypted 文件夹
    sslen ./dir
    
    # 加密目录 输出文件存放到 myEnc 文件夹
    sslen ./dir ./myEnc
    
    # 解密文件 输出存放到 decrypted 文件夹
    sslde ./myEnc/dir.part 
    
    # 解密文件 输出存放到 myDec 文件夹
    sslde ./myEnc/dir.part ./myDec
    

    更新

    2021-05

    实现sslen2 sslde2 可以利用 rar 的 recovery record 进行冗余备份
    该功能主要用于解决网络传输引起的文件损坏,可提供 5% 的冗余数据

    /!\ 注意:1. rar打包效率比sslen低,但是parity的生成效率高于par2;
    2. 此外,Linux发行版使用的rar为评估版本,企业用户须确保有合适的许可后使用。

    最新代码

    最新的代码将会更新在GitHub上:
    https://github.com/lesca/utilities/blob/master/dirEncrypt.sh



沪ICP备19023445号-2号
友情链接