实现本机拷贝带进度的方法
?實現本機拷貝帶進度的方法:
方法一:scp命令(推薦)
# scp -r?/mnt root@127.0.0.1:/home???? (拷貝文件夾要加參數 -r,拷貝文件不需要)
(顯示拷貝速度、剩余時間、已拷貝大小、進度%,不顯示總大小,一般速度為10M/s)
方法二:rsync命令
# rsync -av --progress /mnt /home
(顯示拷貝速度、剩余時間、已拷貝大小、進度%,不顯示總大小,一般速度為300kb/s)
方法三:coreutils工具
讓cp顯示進度的工具,拷貝文件夾也是可以的
$ wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.4.tar.gz
$ tar xvzf coreutils-8.4.tar.gz
$ cd coreutils-8.4/
$ wget http://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<x;i=$i+2));do echo -n "=";done
??????? 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"
:wq
# chmod +x cp.sh
示例:
# ./cp.sh /mnt/a.tar.gz /home
注:
不能拷貝文件夾,只能拷貝單個文件
?
轉載于:https://blog.51cto.com/yangzhiming/1033043
總結
以上是生活随笔為你收集整理的实现本机拷贝带进度的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 角龙的弱点是什么
- 下一篇: word如何设置首字下沉效果