云盘加密备份:一个高效的目录加密脚本
场景
- 将重要的照片、文件等备份到云盘,有一定泄露风险。
- 为了将重要文件进行加密,可以使用
gpg
或者openssl
命令的对称加密方式(更高效率) - 然而,原生命令不支持对目录及子目录进行批量加密
目的
- 使用一种高效的方法,对一个目录进行递归读取后加密
- 如果文件大小超过2GB,则对文件进行分段处理
- 某些云服务可能对文件大小和下载速度进行限制,分段大小请根据自己的云服务自行调节
- 不建议使用过大的分段,一旦损坏将造成整个分段的文件丢失
- 解密时,如果遇到损坏的分段,则仅该分段无法解密,不影响后续分段
使用方法:
- 将以下脚本中您所需要的函数放入 .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
版权声明
本文出自 Lesca 技术宅,转载时请注明出处及相应链接。
本文永久链接: https://www.lesca.cn/archives/a-general-scripts-to-encrypt-a-folder-recursively.html
林海草原
2021-07-04 at 07:15
看起来这是博主设计的,大佬啊,我研究一下。博客用了多年的主题突然一换觉得眼前一亮。
另,麻烦改一下友情链接。“以梦为马奔向远方”已更名为“林海草原”,链接也换了,这个旧域名即将过期,麻烦啦。
lesca
2021-10-10 at 17:18
好了哦