⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blot-out.sh

📁 BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版
💻 SH
字号:
#!/bin/bash# blot-out.sh: 删除一个文件"所有"的记录. #  这个脚本会使用随机字节交替的覆盖目标文件, #+ 并且在最终删除这个文件之前清零.#  这么做之后, 即使你通过传统手段来检查磁盘扇区#+ 也不能把文件原始数据重新恢复.PASSES=7         #  破坏文件的次数.                  #  提高这个数字会减慢脚本运行的速度,                  #+ 尤其是对尺寸比较大的目标文件进行操作的时候. BLOCKSIZE=1      #  带有/dev/urandom的I/O需要单位块尺寸,                  #+ 否则你可能会获得奇怪的结果. E_BADARGS=70     #  不同的错误退出码. E_NOT_FOUND=71E_CHANGED_MIND=72if [ -z "$1" ]   # 没指定文件名. then  echo "Usage: `basename $0` filename"  exit $E_BADARGSfifile=$1if [ ! -e "$file" ]then  echo "File \"$file\" not found."  exit $E_NOT_FOUNDfi  echo; echo -n "Are you absolutely sure you want to blot out \"$file\" (y/n)? "read answercase "$answer" in[nN]) echo "Changed your mind, huh?"      exit $E_CHANGED_MIND      ;;*)    echo "Blotting out file \"$file\".";;esacflength=$(ls -l "$file" | awk '{print $5}')  # 5是文件长度. pass_count=1chmod u+w "$file"   # 允许覆盖/删除这个文件. echowhile [ "$pass_count" -le "$PASSES" ]do  echo "Pass #$pass_count"  sync         # 刷新buffers.  dd if=/dev/urandom of=$file bs=$BLOCKSIZE count=$flength               # 使用随机字节进行填充.   sync         # 再次刷新buffer.   dd if=/dev/zero of=$file bs=$BLOCKSIZE count=$flength               # 用0填充.   sync         # 再次刷新buffer.   let "pass_count += 1"  echodone  rm -f $file    # 最后, 删除这个已经被破坏得不成样子的文件.sync           # 最后一次刷新buffer.echo "File \"$file\" blotted out and deleted."; echoexit 0#  这是一种真正安全的删除文件的办法,#+ 但是效率比较低, 运行比较慢.#  GNU文件工具包中的"shred"命令,#+ 也可以完成相同的工作, 不过更有效率.                                                            #  使用普通的方法是不可能重新恢复这个文件了.#  然而 . . .#+ 这个简单的例子是不能够抵抗#+ 那些经验丰富并且正规的分析.                                                            #  这个脚本可能不会很好的运行在日志文件系统上(JFS).#  练习 (很难): 像它做的那样修正这个问题.#  Tom Vier的文件删除包可以更加彻底的删除文件, #+ 比这个例子厉害的多. #     http://www.ibiblio.org/pub/Linux/utils/file/wipe-2.0.0.tar.bz2#  如果想对安全删除文件这一论题进行深入的分析,#+ 可以参见Peter Gutmann的网页,#+     "Secure Deletion of Data From Magnetic and Solid-State Memory".#       http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -