实现本机拷贝带进度的方法

简介:

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


方法一: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

注:

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

本文转自linux博客51CTO博客,原文链接http://blog.51cto.com/yangzhiming/1033043如需转载请自行联系原作者


yangzhimingg

相关文章
|
7月前
|
安全 C++
c++拷贝控制(二)
c++拷贝控制(二)
49 0
|
7月前
|
数据可视化
在使用SVN的过程中,通过哪些执行查看某个文件的修改信息
在使用SVN的过程中,通过哪些执行查看某个文件的修改信息
1310 0
解决删除文件时出现“该项目不在XX中,请确认该项目的位置然后重试”的提示
近期在删除文件夹的时候,出现了这个“该项目不在XX中,请确认该项目的位置然后重试”的提示,实际上这个文件(夹)就在那里,死活都删不掉,win10系统重启之后删除都不行的
9421 0
|
7月前
|
安全 编译器 程序员
c++拷贝控制(一)
c++拷贝控制(一)
52 1
|
SQL 存储 小程序
[原]排错实战——VS清空最近打开的工程记录
快速清理 visual studio 最近打开的工程列表,有脚本也有小程序
|
编译器 C++
C/C++中的三种拷贝方式
C/C++中的三种拷贝方式
144 0
|
缓存
母机修改了文件,虚拟机复制到的可能不是预期的
母机修改了文件,虚拟机复制到的可能不是预期的
80 0
|
监控
【远程】rsync远程同步文件、快速清空大文件
文章目录 前言 一、概念/应用环境 二、搭建/操作实例
221 0
|
Shell 开发工具 git
对已经add的文件不在跟踪
记录每次更新到仓库 现在我们手上已经有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。接下来,对这些文件作些修改,在完成了一个阶段的目标之后,提交本次更新到仓库。 请记住,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。
733 0
对已经add的文件不在跟踪

热门文章

最新文章