openssl enc -e -bf -k crypt.key -in file -out file.crypt
那我有一堆檔案呢? 總不能全手動吧? 有人結合 tar 的指令, 可是這樣不就產生一個超大的檔案?我只要每個檔案加密就好, 可是要怎麼結合 openssl 指令呢? 因為有兩個地方要有東西, 一個 in, 一個 out, 谷歌好久都沒看到有人這麼做, 不過看到類似的指令就吧它拼起來, 結果像這樣
#!/bin/bash
TAR=/home
find $TAR -type f > cryptfile
find $TAR -type d > dir
for DIR in $(cat dir)
do
mkdir /tmp/$DIR
done
for FILE in $(cat cryptfile)
do
echo $FILE
openssl enc -e -bf -k crypt.key -in $FILE -out /tmp/$FILE.cypt
done
先把要備份的檔案存成一個文字檔 cryptfile, 再來產生另一個文字檔放目錄, 再來用兩 for 迴圈, 在 /tmp 建一樣的目錄來放加密過的檔案, 就大功告成了. 但是...但是...遇到有空白的目錄或檔名就完蛋了, 因為 for 迴圈是用空白來換行的, 這該如何是好? 該不會要搬出 sed, awk 吧? 谷歌了好久, 終於看到一線曙光, 有人也有相同的問題, 原來用 whlie 就行了, 結果像這樣
#!/bin/sh
TAR=/home
find $TAR -type f > cryptfile
find $TAR -type d > dir
cat dir | while read DIR
do
#echo $DIR
mkdir -p "/tmp/$DIR"
done
cat cryptfile | while read FILE
do
echo $FILE
openssl enc -e -bf -k crypt.key -in "$FILE" -out "/tmp/$FILE.cypt"
done
大功告成, 真是太神奇了, 可是為什麼呢?
沒有留言:
張貼留言