按时间拷贝文件linux,Linux系统大文件或目录复制时剩余时间和大小shell统计脚本...

大家都是知道linux的cp复制是没有显示更多详细信息的,所有很多的时候我们不知道还剩余多少时间,以及还剩余多少要复制的

昨天在机房等待复制数据(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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值