最近有一个需求,公司有一些财务资料需要归档,为了安全,需要都进行加密归档。
另外,之后如果有新的需要归档的文件,也希望继续归档到一起,也就是说需要一个追加文件的功能。
对比了几种方案,考虑到兼容性以及便利性,最终还是决定利用 7z 的加密特性,来实现需求。
方案解释
这个方案最简单,只需要设备支持 7z 命令,就可以利用两条命令分别实现加密归档和安全追加文件。
7z 命令在 Windows 和 MacOS 上都需要额外安装下,比较简单,可以自行百度下,或者留言提需求,我可以单独再出个教程
我们利用 7z 支持输入密码加密的特性,来对文件进行加密归档,只要密码足够复杂,想要硬破解也是很难的。
之后又有新的文件需要加入这个归档的压缩包,可以选择追加文件。不过每次追加都会重写部分压缩索引,频繁操作可能导致文件损坏。
这里推荐的方案是解压原压缩包到临时目录,再复制新文件到临时目录,重新安全加密压缩,来实现文件追加,之后再删除临时目录,这样的方案最安全保险。
具体命令
1.
首先是压缩的命令
7z a -t7z -mx=7 -mhe=on -p /path/to/Archive_$(date +%Y%m%d_%H%M%S).7z /path/to/YourFiles/*
过程中会要求输入密码,-mhe=on 参数表示加密文件列表和文件内容,-mx=7 表示压缩等级为7(0-9),可以根据需求调整。
2.
然后是追加文件的命令
我简单加了点注释,实际使用中可以删除所有 # 开头的注释行,每一行为一条命令,单独执行。
# 解压原归档文件到临时目录
7z x /path/to/Archive_2025xxxx_xxxxxx.7z -o./tmp
# 移动追加的文件到临时目录
mv /path/to/NewFiles/* ./tmp/
# 重新加密压缩生成新的归档文件
7z a -t7z -mx=7 -mhe=on -p /path/to/Archive_$(date +%Y%m%d_%H%M%S).7z ./tmp/*
# 删除临时目录
rm -rf ./tmp
过程中会首先要求输入原压缩包密码来解压,之后会要求输入新压缩包密码来生成压缩包。
额外说明
刚开始写的时候,我是想让任何人都能看完这篇文章就能上手使用,但发现如果要做到这一点,要解释的东西就比较多。
所以,推荐你至少了解:
- 如何使用终端执行命令
- 了解路径参数的意思,并知道如何根据需求进行修改
- linux 和 windows 在命令上可能存在区别(本文中的命令是在 MacOS 上测试并使用的)
如果有问题,欢迎留言提问,我很乐意解答,希望可以帮助到有同样需求的人。











