英文:
7z directrories with unique passwords and filenames
问题
我有一堆目录,我想用7z来进行密码保护。我想生成一个64字符的字符串作为密码,一个6字符的字符串作为文件的前缀。
理想情况下,我希望将它们都保存到一个文件中,以数组的形式来跟踪名称和密码。
目前我手动操作,但现在我有太多要做,所以我想使用bash来完成。
我使用我的密码管理器生成了密码和6字符的字符串。将它们复制并粘贴到脚本中运行。对于1或2个文件来说,这样做还可以,但现在我有数百个文件。
Password_string=NzNeUGMpA1DkFPGQW3CEfLX1PIQdFNmKwyBrTqjv73ydcPwAJnNHUZFj4r2siBEu
a=1
for i in *;
do 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -p$Password_string -mhe=on $i.7z $i
new=$(printf "636995_archive_%04d.7z" "$a") #04 pad to length of 4
mv -i -- "$i.7z" "$new" #rename to include numbers
let a=a+1 #increment counter
done
这是您提供的bash脚本,我已经将其翻译好了。
英文:
I have a bunch of directories that I want to password protect with 7z. I want to generate a 64 character string to use as the password, a 6 character string to use as a prefix to the file.
I would ideally like to save both to a file in an array to keep track of the names and passwords.
Currently i do this manually, but I have too many to do now so I would like to use bash to do it.
I generated the passwords and 6 character string using my password manager. Copy and paste into the script and run it. For 1 or 2 files this ok, but now I have 100's.
Password_string=NzNeUGMpA1DkFPGQW3CEfLX1PIQdFNmKwyBrTqjv73ydcPwAJnNHUZFj4r2siBEu
a=1
for i in *;
do 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -p$Password_string -mhe=on $i.7z $i
new=$(printf "636995_archive_%04d.7z" "$a") #04 pad to length of 4
mv -i -- "$i.7z" "$new" #rename to include numbers
let a=a+1 #increment counter
done
答案1
得分: 2
你可以在循环中随机生成前缀和密码。创建存档后,可以在下一次循环迭代之前将变量记录到文件中。
以下是我的示例。我注释了7z
命令,这样我可以测试脚本并查看日志。
seq=0
echo 'dir,prefix,seq,archive,password' > log.csv
for dir in /*; do
prefix=$(head -c 6 <(tr -dc '0-9' < /dev/urandom)) # 生成随机的6位前缀
pw64=$(head -c 64 <(tr -dc '[:alnum:]' < /dev/urandom)) # 生成随机的64字符字母数字字符串
((seq+=1))
archive=$(printf "${prefix}_archive_%04d" "$seq") # 存档名称
# 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -p"$pw64" -mhe=on "$archive.7z" "$dir"
echo "$dir,$prefix,$seq,$archive,$pw64" >> log.csv
done
日志的部分视图:
dir,prefix,seq,archive,password
/bin,614175,1,614175_archive_0001,C7UhfDcfUyjV0JeOBykMn6fDMF4H4hWka7Y4xluzmWGDPqN0vlNzReIwLv7cYSE7
/boot,605074,2,605074_archive_0002,BsUQ5uEFpMZKZnKpUq7OH3VVMpp4jrsUrtVWBt6h1Q3S3mHAr5cnJk9w10LefzL0
/dev,676241,3,676241_archive_0003,5zcnV9EO8Z5nOA3VANGdMoVGTIdjT77RUKybd6cgfXLXDXLA9jiPYtJO66ZwTSbq
英文:
you can randomly generate the prefix and password in your loop. After you create the archive, you can log the variables to a file before the next iteration of the loop.
Here's my example. I commented the 7z
command, so I could test the script and see the log.
seq=0
echo 'dir,prefix,seq,archive,password' > log.csv
for dir in /*; do
prefix=$(head -c 6 <(tr -dc '0-9' < /dev/urandom)) # generate random 6-digit prefix
pw64=$(head -c 64 <(tr -dc '[:alnum:]' < /dev/urandom)) # generate random 64-char alphanumeric string
((seq+=1))
archive=$(printf "${prefix}_archive_%04d" "$seq") # name of archive
#7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off -p"$pw64" -mhe=on "$archive.7z" "$dir"
echo "$dir,$prefix,$seq,$archive,$pw64" >> log.csv
done
Partial view of the log:
dir,prefix,seq,archive,password
/bin,614175,1,614175_archive_0001,C7UhfDcfUyjV0JeOBykMn6fDMF4H4hWka7Y4xluzmWGDPqN0vlNzReIwLv7cYSE7
/boot,605074,2,605074_archive_0002,BsUQ5uEFpMZKZnKpUq7OH3VVMpp4jrsUrtVWBt6h1Q3S3mHAr5cnJk9w10LefzL0
/dev,676241,3,676241_archive_0003,5zcnV9EO8Z5nOA3VANGdMoVGTIdjT77RUKybd6cgfXLXDXLA9jiPYtJO66ZwTSbq
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论