iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 29
0
自我挑戰組

30 天不間斷-資工隨筆大雜燴系列 第 29

[Day 29] 自己的 Shell Script 自己寫 - 備份刪除檔案

前言

因爲有時後在 Linux 環境執行 rm 有可能會發生手殘按下去資料就不會來的慘劇,因此我們擴充了 rm 指令,在每次刪除的時候會自動建立一個隱藏檔並備份,但又怕硬碟爆掉,所以建立一個 crontab 排程每天晚上12點清掉。

腳本

rmpro.sh

#!/bin/bash

tmpdir="$HOME/.deleted-files"
realrm="$(which rm)"
copy="$(which cp) -R"



#如果沒有任何參數,那就用原本的 rm
if [ $# -eq 0 ] ; then  
  exec $realrm  
fi


flags=""

while getopts "dfiPRrvW" opt
do
  case $opt in
    f ) exec $realrm "$@"     ;;  
    * ) flags="$flags -$opt"  ;; 
  esac
done
shift $(( $OPTIND - 1 ))


if [ ! -d $tmpdir ] ; then
  if [ ! -w $HOME ] ; then
    echo "$0 錯誤: 無法在 $HOME 建立 $tmpdir " >&2 
    exit 1
  fi
  mkdir $tmpdir
  chmod 700 $tmpdir
fi

for arg 
do
  newname="$tmpdir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"
  if [ -f "$arg" -o -d "$arg" ] ; then
    $copy "$arg" "$newname"	
  fi
done

exec $rmpro $flags "$@"  

true-delete.sh

#!/bin/bash

cd $HOME/.deleted-files
rm *

crontab -e

0 12 * * * ~/true-delete.sh

上一篇
[Day 28] Pipenv 套件管理工具
下一篇
[Day 30] 不算大雜燴,算是開始
系列文
30 天不間斷-資工隨筆大雜燴30

尚未有邦友留言

立即登入留言