linux拷贝文件夹时获取进度,实现本机拷贝显示进度的方法

实现本机拷贝显示进度的方法:

方法一:scp命令(推荐)

# scp -r /mntroot@127.0.0.1:/home(拷贝文件夹要加参数 -r,拷贝文件不需要)

(显示拷贝速度、剩余时间、已拷贝大小、进度%,不显示总大小,一般速度为10M/s)

方法二:rsync命令

# rsync -av --progress /mnt /home

(显示拷贝速度、剩余时间、已拷贝大小、进度%,不显示总大小,一般速度为300kb/s)

方法三:coreutils工具

让cp显示进度的工具,拷贝文件夹也是可以的

$ wgethttp://ftp.gnu.org/gnu/coreutils/coreutils-8.4.tar.gz$ tar xvzf coreutils-8.4.tar.gz$ cd coreutils-8.4/$ wgethttp://beatex.org/web/advcopy/advcpmv-0.3-8.4.patch$ patch -p1 -i advcpmv-0.3-8.4.patch$ ./configure$ make$ sudo cp src/cp /usr/bin/cp$ sudo cp src/mv /usr/bin/mv 用的时候要切换到root模式才行

# cp -r -g /root /home/

(显示总大小、速度、剩余时间、不显示已拷贝大小,一般速度200kb/s)

方法四:cp.sh脚本

(显示速度、进度、不显示总大小、剩余时间、已拷贝大小,一般速度300kb-1M/s不等)

# vi cp.sh#!/bin/bash

trap 'exit_fun' 2

usage(){

echo "Usage: `basename $0` \"src file\" \"dst file\""

exit 1

}

exit_fun(){

echo -e "\033[?25h"

kill -9 $(ps -ef|awk '/ [c]p /{print $2}') &>/dev/null

exit 1

}

[ "$#" -ne "2" ] && usage

[ -d "$2" ] && k=${2%%/}/`basename $1` || k=$2

fromsize=`ls -s $1|cut -d" " -f1`

cp $1 $k &

start=`date +%s`

sleep 0.2

echo -ne "\033[?25l"

while :;do

tosize=`ls -s $k|cut -d" " -f1`

x=`echo "$tosize $fromsize"|awk '{print int($1*100/$2)}'`

[ $x -eq 99 ] && x=100

echo -n "["

for((i=0;i

echo -n ">"

for((j=i;j<=99;j=$j+2));do echo -n " ";done

now=$[`date +%s` - $start]

[ $now -eq 0 ] && now=1

avg=$[$tosize/$now]

printf "] %4s%% %4sKb/s" $i $avg

[ $x -ge 100 ] && break

sleep 0.1

echo -ne "\r"

done

echo -e "\033[?25h"

# chmod +x cp.sh

示例:

# ./cp.sh /mnt/a.tar.gz /home

注:

不能拷贝文件夹,只能拷贝单个文件

本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值