Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
对海量文件进行AES加密归档和分割
Theme area
3071
views ·
1
replies ·
To
floor
Go
已退deepin
deepin
2020-07-08 18:26
Author
我的这个脚本用来对海量的文件(几个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
-aes
256
-kfile
"
$PASS_FILE
"
| gtar
-xzvf
-
-C
data
Reply
Like 0
Favorite
View the author
All Replies
ylxdxx
deepin
2020-10-28 16:43
#1
用上了,感谢分享
Reply
Like 0
View the author
Please
sign
in first
Featured Collection
Change
[Tutorial] deepin25 WSL Offline Installation Guide
UOS AI 2.8 Released! Three New Intelligent Agents & Major Evolution
Solid Q&A | deepin 25 Common Questions – The Immutable System Edition
New Thread
Popular Events
More
我的这个脚本用来对海量的文件(几个TB以上),数十万以上文件,进行归档,AES加密,并分割的脚本。
同时也提供解密和恢复的脚本。
这个脚本可以帮你对文件进行AES加密,然后你自己上传到云进行备份。
1. 随机生成32位加密密码:
$ export PASS_LEN=32
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
$ 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