假設我們現在遇到這樣一個問題,公司的關鍵資料copy到測試伺服器上了,在直接將其刪除後,仍然擔心伺服器供應商可以將其恢複,即便是通過fdisk進行重新格式化,也仍然存在被恢複的風險,鑒於此,我們需要編寫一個指令碼,建立很多小檔案(5MB左右),之後不停在關鍵資料所在的磁碟中複製該檔案,以使Linux的inode無法再被重新恢複,為了達到這裡效果,我們需要先構造該檔案,如:
代碼如下 |
複製代碼 |
/> find . -name "*" > testfile /> ls -l testfile -rwxr-xr-x. 1 root root 5123678 Dec 9 11:46 testfile /> cat > test27.sh #!/bin/sh
|
#1. 初始化計數器變數,其中max的值是根據當前需要填充的磁碟空間和testfile的大小計算出來的。
代碼如下 |
複製代碼 |
counter=0 max=2000000 remainder=0
|
#2. 每次迭代counter變數都自增一,以保證每次產生不同的檔案。當該值大於最大值時退出。
#3. 對計數器變數counter按1000模數,這樣可以在每產生1000個檔案時列印一次輸出,以便看到覆蓋的進度,輸出時間則便於預估還需要多少時間可以完成。
#4. 建立單獨的、用於存放這些覆蓋檔案的目錄。
#5. 產生臨時檔案,如果寫入失敗列印出提示資訊。
代碼如下 |
複製代碼 |
while true do ((counter=counter+1)) if [ #counter -ge $max ]; then break fi ((remainder=counter%1000)) if [ $remainder -eq 0 ]; then echo -e "counter = $countert date = " $(date) fi mkdir -p /home/temp2 cat < testfile > "/home/temp/myfiles.$counter" if [[ $? -ne 0 ]]; then echo "Failed to wrtie file." exit 1 fi done echo "Done" CTRL+D /> ./test27.sh counter = 1000 Fri Dec 9 17:25:04 CST 2011 counter = 2000 Fri Dec 9 17:25:24 CST 2011 counter = 3000 Fri Dec 9 17:25:54 CST 2011 |
... ...
與此同時,可以通過執行下面的命令監控磁碟空間的使用率。
代碼如下 |
複製代碼 |
/> watch -n 2 'df -h' Every 2.0s: df -h Fri Dec 9 17:31:56 2011 Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.9G 2.3G 1.4G 63% / tmpfs 504M 100K 504M 1% /dev/shm /dev/sda1 49M 36M 11M 77% /boot /dev/sda3 15G 172M 14G 2% /home
|
我們也可以在執行的過程中通過pidstat命令監控指令碼進程的每秒讀寫塊數。