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

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

作者: lesca 分类: Tutorials 发布时间: 2021-04-12 17:11 ė浏览 189 次 6没有评论

场景

  • 将重要的照片、文件等备份到云盘,有一定泄露风险。
  • 为了将重要文件进行加密,可以使用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

最新代码

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

Copyright

本文出自 Lesca 技术宅,转载时请注明出处及相应链接。

本文永久链接: https://lesca.me/archives/a-general-scripts-to-encrypt-a-folder-recursively.html

Leave a Reply

Your email address will not be published. Required fields are marked *

Ɣ回顶部