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

作者: lesca 分类: Tutorials 发布时间: 2021-04-12 17:11

场景

  • 将重要的照片、文件等备份到云盘,有一定泄露风险。
  • 为了将重要文件进行加密,可以使用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 -c1 | openssl enc -aes-256-cbc -pass file:passfile | split -a3 -d -b 2G - des/`basename1`.part ; }
sslde() { [ "2" = "" ] && des=decrypted || des=2 ; mkdir -p des ; cat1* | 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 可以利用 rarrecovery record 进行冗余备份
该功能主要用于解决网络传输引起的文件损坏,可提供 5% 的冗余数据

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

最新代码

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

版权声明

本文出自 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 *