Linux系统大文件或目录复制时剩余时间和大小shell统计脚本
时间:2015-09-21 00:36 来源:linux.it.net.cn 作者:IT
大家都是知道linux的cp复制是没有显示更多详细信息的,所有很多的时候我们不知道还剩余多少时间,以及还剩余多少要复制的
昨天在机房等待复制数据(332G)时,实在等待的无聊;主要用于当开始一个复制操作时,如果量比较大,我们又必须等待其完成,每次通过du查看的数据,自己要算一下才知道大概有多久;
这个很麻烦,于是想,这应该是个很简单的脚本;
先说操作前提,首先得有正在复制的东东,注意是正在复制的,文件或目录皆可,
然后要给脚本一个间隔时间,脚本通过间隔时间来计算平均每秒复制速度,然后还要告诉脚本源文件和目标文件,当然目录也可以。
1
./script.sh 10 /nfs/openSUSE-11.2-DVD-x86_64.iso /opt/os/openSUSE-11.2-DVD-x86_64.iso
2
Speed: 13.20MB/s; Done: 0.12GB; 121.00MB
# 每秒平均速度,完成的GB多少,MB多少
3
Time: 5.45 sec; Have: 4.22GB; 4316.41MB
# 预计还需要多少分钟,还有多少没复制,其大小是多少GB,MB
代码如下:
01
#!/bin/bash
02
DIR1=${2:-/var/log/}
03
DIR2=${3:-/var/log/}
04
INV=${1:-30}
05
HELP(){
06
echo
" Usage: $0 interval /path/source/dir/ /path/destination/dir/"
07
echo
" Exam: $0 30 /opt/data/bak/ /mnt/disk1/"
08
exit
1
09
}
10
[ -z $1 ] && HELP
11
CT=`
du
-s $DIR1|
awk
'{print $1}'
`
12
BFR=`
du
-s $DIR2|
awk
'{print $1}'
`
13
sleep
$INV
14
AFT=`
du
-s $DIR2|
awk
'{print $1}'
`
15
DMB=`
echo
$AFT|
awk
'{printf("%.2lf",$1/1024)}'
`
16
DGB=`
echo
$AFT|
awk
'{printf("%.2lf",$1/1024/1024)}'
`
17
MB=`
echo
$AFT $BFR $INV|
awk
'{printf("%.2lf",($1-$2)/$3/1024)}'
`
18
echo
"Speed: "
$MB
"MB/s; Done: "
$DGB
"GB; "
$DMB
"MB "
19
ETIME=`
echo
$CT $AFT $MB|
awk
'{printf("%.2lf",($1/1024-$2/1024)/$3/60)}'
`
20
EGB=`
echo
$CT $AFT|
awk
'{printf("%.2lf",($1-$2)/1024/1024)}'
`
21
EMB=`
echo
$CT $AFT|
awk
'{printf("%.2lf",($1-$2)/1024)}'
`
22
echo
"Time: $ETIME sec; Have: "
$EGB
"GB; "
$EMB
"MB"
(责任编辑:IT)
大家都是知道linux的cp复制是没有显示更多详细信息的,所有很多的时候我们不知道还剩余多少时间,以及还剩余多少要复制的 昨天在机房等待复制数据(332G)时,实在等待的无聊;主要用于当开始一个复制操作时,如果量比较大,我们又必须等待其完成,每次通过du查看的数据,自己要算一下才知道大概有多久; 这个很麻烦,于是想,这应该是个很简单的脚本; 先说操作前提,首先得有正在复制的东东,注意是正在复制的,文件或目录皆可, 然后要给脚本一个间隔时间,脚本通过间隔时间来计算平均每秒复制速度,然后还要告诉脚本源文件和目标文件,当然目录也可以。
代码如下:
(责任编辑:IT) |