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

作者: 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 -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 可以利用 rarrecovery record 进行冗余备份
该功能主要用于解决网络传输引起的文件损坏,可提供 5% 的冗余数据

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

最新代码

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

版权声明

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

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

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

2 Comments
  • 林海草原

    2021-07-04 at 07:15

    看起来这是博主设计的,大佬啊,我研究一下。博客用了多年的主题突然一换觉得眼前一亮。
    另,麻烦改一下友情链接。“以梦为马奔向远方”已更名为“林海草原”,链接也换了,这个旧域名即将过期,麻烦啦。

    1. lesca

      2021-10-10 at 17:18

      好了哦