大文件或目錄複製時的信息統計腳本

昨天在機房等待複製數據(332G)時,實在等待的無聊,就寫了這麼個東西;主要用於當開始一個複製操作時,如果量比較大,我們又必須等待其完成,每次通過du查看的數據,自己要算一下才知道大概有多久;這個很麻煩,於是想,這應該是個很簡單的腳本;

先說操作前提,首先得有正在複製的東東,文件或目錄皆可,然後要給腳本一個間隔時間,腳本通過間隔時間來計算平均每秒複製速度,然後還要告訴腳本源文件和目標文件,當然目錄也可以。

如下:

./script.sh 10 /nfs/openSUSE-11.2-DVD-x86_64.iso /opt/os/openSUSE-11.2-DVD-x86_64.iso
Speed: 13.20MB/s; Done: 0.12GB; 121.00MB     # 每秒平均速度,完成的GB多少,MB多少
Time: 5.45 sec; Have: 4.22GB; 4316.41MB      # 預計還需要多少分鐘,還有多少沒複製,其大小是多少GB,MB

代碼如下:

#!/bin/bash
DIR1=${2:-/var/log/}
DIR2=${3:-/var/log/}
INV=${1:-30}
HELP(){
        echo " Usage: $0 interval /path/source/dir/ /path/destination/dir/"
        echo " Exam: $0 30 /opt/data/bak/ /mnt/disk1/"
        exit 1
}
[ -z $1 ] && HELP
CT=`du -s $DIR1|awk '{print $1}'`
BFR=`du -s $DIR2|awk '{print $1}'`
sleep $INV
AFT=`du -s $DIR2|awk '{print $1}'`
DMB=`echo $AFT|awk '{printf("%.2lf",$1/1024)}'`
DGB=`echo $AFT|awk '{printf("%.2lf",$1/1024/1024)}'`
MB=`echo $AFT $BFR $INV|awk '{printf("%.2lf",($1-$2)/$3/1024)}'`
echo "Speed: "$MB"MB/s; Done: "$DGB"GB; "$DMB"MB "
ETIME=`echo $CT $AFT $MB|awk '{printf("%.2lf",($1/1024-$2/1024)/$3/60)}'`
EGB=`echo $CT $AFT|awk '{printf("%.2lf",($1-$2)/1024/1024)}'`
EMB=`echo $CT $AFT|awk '{printf("%.2lf",($1-$2)/1024)}'`
echo "Time: $ETIME sec; Have: "$EGB"GB; "$EMB"MB"



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章