You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash批量生成带独立密码的7z目录压缩包并记录信息

改进后的批量7z加密压缩脚本

以下是满足你需求的Shell脚本,实现批量为每个目录生成独立64位密码、6位随机前缀文件名,并记录文件名与密码的对应关系:

# 初始化密码映射文件(清空已有内容或新建)
> password_map.txt

# 遍历当前目录下的所有子目录(仅处理目录,排除普通文件)
for dir in */; do
    # 移除目录名末尾的斜杠,获取干净的目录名称
    dir_name=${dir%/}
    
    # 生成64位纯字母数字随机密码(基于系统加密安全随机源)
    password=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64)
    
    # 生成6位纯字母数字随机文件名前缀
    prefix=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 6)
    
    # 构造最终压缩包文件名
    archive_name="${prefix}_archive_${dir_name}.7z"
    
    # 执行7z加密压缩,开启文件名加密(-mhe=on)
    7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -p"$password" -mhe=on "$archive_name" "$dir_name"
    
    # 将文件名与对应密码以数组形式写入映射文件,方便后续追踪
    echo "['$archive_name', '$password']" >> password_map.txt
    
    echo "完成压缩:$archive_name,密码已记录"
done

关键改进说明
  • 独立密码生成:通过/dev/urandom系统随机源生成64位纯字母数字密码,避免特殊字符导致的命令解析问题,同时保证密码的随机性和安全性。
  • 6位前缀生成:采用相同随机方式生成6位前缀,确保每个压缩包文件名唯一,避免重名冲突。
  • 密码映射追踪:将每个压缩包的文件名与对应密码以数组元素格式写入password_map.txt,方便后续批量管理和查询。
  • 安全参数处理:密码用双引号包裹传递给7z命令,避免密码包含空格或特殊字符时出现执行错误;仅遍历子目录,避免误压缩普通文件。
  • 文件名加密:保留原脚本的-mhe=on参数,确保压缩包内的文件名也被加密,提升安全性。

使用注意事项
  • 确保系统已安装7za工具:Debian/Ubuntu可执行sudo apt install p7zip-full,RHEL/CentOS可执行sudo yum install p7zip。
  • password_map.txt需妥善保管,一旦丢失将无法恢复加密压缩包的内容。
  • 若需要固定前缀而非随机生成,可将prefix变量替换为你指定的6位字符串(如prefix="636995")。

内容的提问来源于stack exchange,提问作者superuser-Miguel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:41:30