发新帖

对海量文件进行AES加密归档和分割

user0001 / 2020-7-8 10:26
浏览: 2533 / 回复: 0
查看: 2533|回复: 0

对海量文件进行AES加密归档和分割

[复制链接]
收藏
跳转到指定楼层


我的这个脚本用来对海量的文件(几个TB以上),数十万以上文件,进行归档,AES加密,并分割的脚本。
同时也提供解密和恢复的脚本。

这个脚本可以帮你对文件进行AES加密,然后你自己上传到云进行备份。

1. 随机生成32位加密密码:

$ export PASS_LEN=32
$ PASS=`dd count=$PASS_LEN bs=1 if=/dev/random 2> /dev/zero |  base64 | cut -c 1-$PASS_LEN`


2. 记录密码到 本地文件 $HOME/backup_pass
echo $PASS | tee $HOME/backup_pass

3. 对海量数据进行归档并用AES256加密后分割位大小$SPLIT_SIZE的文件:
$ export SPLIT_SIZE="3900m"  #3.9GB一个文件,刚刚好可以上传到百度云
$ export SPLIT_PREFIX="`date +%Y%m%d`"".tgz.aes256_"  #前缀

打包后的文件名类似 YYYYMMDD.tgz.aes256_aaa YYYYMMDD.tgz.aes256_aab YYYYMMDD.tgz.aes256_aac ....

$ mkdir backup
$ gtar --seek -czvf - "$backup_path" | openssl enc -e -aes256 -kfile "$PASS" | split -a 3 -b $SPLIT_SIZE - "backup/$SPLIT_PREFIX"




解密:

我们不能够用ls backup/*来获取文件列表,因为文件可能会特别多,导致命令行溢出

1. 先构建文件列表
$ mkdir data
$ export LIST_FILE=data/list.txt
$ find "backup" -iname "*.tgz.aes256_*" -print > "$LIST_FILE"

对列表排序

$ sort -t _ -k 2 "$LIST_FILE" -o "$LIST_FILE"


$ export PASS_FILE=$HOME/backup_pass
$ cat "$LIST_FILE" | xargs -n 1 -J {} cat {} | openssl enc -d -aes256 -kfile "$PASS_FILE" | gtar -xzvf - -C  data








您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回版块 返回顶部