Linux 有什么方法可以使得 cp mv 文件的时候能够显示进度?(在终端下) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
pandada8
V2EX    Linux

Linux 有什么方法可以使得 cp mv 文件的时候能够显示进度?(在终端下)

  •  
  •   pandada8 2013-07-28 19:55:12 +08:00 48336 次点击
    这是一个创建于 4466 天前的主题,其中的信息可能已经有所发展或是发生改变。
    除了MidnightCommander这种大奇葩……
    //树莓派下启动mc太慢
    25 条回复    2023-04-10 06:05:15 +08:00
    reusFork
        1
    reusFork  
       2013-07-28 20:02:02 +08:00   4
    rsync -aP
    kqz901002
        2
    kqz901002  
       2013-07-28 20:02:26 +08:00
    自己写代码 然后添加管道
    reusFork
        3
    reusFork  
       2013-07-28 20:03:33 +08:00   1
    alias cp="rsync -avz"
    rrfeng
        4
    rrfeng  
       2013-07-28 20:04:12 +08:00   3
    http://beatex.org/web/advancedcopy.html
    其实可以自己写脚本实现的,不过效率会低很多
    pandada8
        5
    pandada8  
    OP
       2013-07-28 20:05:00 +08:00
    @reusFork
    @kqz901002
    谢谢
    我决定用 patch 过的版本……
    http://beatex.org/web/advancedcopy.html
    eye candy 赛高!
    pandada8
        6
    pandada8  
    OP
       2013-07-28 20:06:14 +08:00
    @rrfeng 咳,我刚找到……还是谢谢了
    ted05
        7
    ted05  
       2013-07-28 22:02:05 +08:00
    @rrfeng 犀利啊。
    rrfeng
        8
    rrfeng  
       2013-07-29 08:11:52 +08:00
    @ted05 那不是我写的……
    ksc010
        9
    ksc010  
       2013-07-29 09:12:31 +08:00   1
    原来看过这个说法,想起来在window下面的“正在计算源文件大小……”计算了半天
    ---------------------------
    为什么要避免在 cp 时显示进度条这种设计?
    进度条显示依赖于两个关键,一是总工作量,一是当前进度量。 对于
    wget 来说, 如果要获取的资源在头部有Content-Length, 那么它可以认为获得了“总工作量”, 而具体下载过程中下载了多个字节它是知道的,这种情况下得到进度百分比是轻负担的,可承受的。
    对于wget获取一个使用http协议的URL来说, 如果Content-Length没有指定, 则wget 也无法获取总工作量, 它所能做的只是下载一点是一点,直到收到一个结束标志。而这种情况下即使wget也无法正确显示进度条。
    注: Content-Length 头在Http协议中是可选的.

    对 于cp -a 这样的任务来说, 可能很多用把它用作备份的手段, 执行这个命令一般都是大宗买卖, 源往往是一个目录。 而获取这样一个目录的总大小是可能但不可负担的,你可以du -csh /usr/src/linux 试试看。 在这段时间内你差不多可以复制完成了。
    另一种情况, 即使要复制的源是单个的大文件,此时总工作量易于得到, 但整个copy 过程中每时每刻的工作进度则要通过不断地轮询目标文件的大小来实现。 这需要至少两个进程/线程来实现, 比较wget在内部获得这一指标来说, cost太大了。
    seraphimhj
        10
    seraphimhj  
       2013-07-29 15:43:46 +08:00   1
    pv: monitor progress of data through pipe
    pandada8
        11
    pandada8  
    OP
       2013-07-29 16:06:43 +08:00
    @ksc010 可能是Win下待久了……遇到长时间耗时任务就希望有个进度条……虽然纯粹是Eye Candy……对于任务的解决并没有任何作用……

    同时这个使用环境是我在树莓派下复制一些大文件时用的……鉴于I/O不给力的缘故……所以希望有一个回显确定他没死掉……

    我认为这种需求肯定是存在的……当然上面提到的问题也不可忽视……最好的选择是将进度条作为一个可选项存在,当用户需要时,呈现一个进度条(尽管造成了一定的性能损失),不用时则达到效率的最大化。

    //顺便cp/mv的时候也可以在内部获得目标文件的大小的吧……
    ksc010
        12
    ksc010  
       2013-07-29 16:12:02 +08:00
    @pandada8 嗯啊,能有可选项最好
    yaroot
        13
    yaroot  
       2013-07-29 16:14:00 +08:00   1
    pv file.bin > file0.bin
    rsync --progress
    roricon
        14
    roricon  
       2013-07-29 16:35:13 +08:00
    推荐使用OmegaT http://www.omegat.org/zh_CN/omegat.html
    基于JAVA的辅助翻译软件。自带原生字典以及各个翻译引擎的接口。

    用来翻译过几个文档,感觉还不错。
    感觉如果专业词汇比较多,还是灵格斯的专业词典比较靠谱
    terry
        15
    terry  
       2013-07-30 13:45:00 +08:00
    pipe 给 pv 或者用 rsync -av --progress --stats src dest

    个人推荐后者
    ivenvd
        16
    ivenvd  
       2013-07-30 13:56:43 +08:00
    pycp 不就是用来干这个的么……
    Chrics
        17
    Chrics  
       2013-08-28 01:57:09 +08:00
    @ksc010 那在windows下进度条的实现机制是什么呢?在性能优化的很多方面Linux都比Windows优秀的多,能不能参考win的进度条来实现Linux下cp或者wget进度条的显示呢?
    acecode
        18
    acecode  
       2013-08-28 19:29:02 +08:00
    Linux 哲学之一就是干简单的事,把简单的事干好;文件操作的命令只负责文件操作;看死没死掉,那就看进程去,或者看输出的文件列表
    ksc010
        19
    ksc010  
       2013-08-29 09:35:52 +08:00   1
    @Chrics 在xp下面复制大量文件会消耗事件在计算总大小上面
    win7下好些 ,不知道用了什么方法
    clino
        20
    clino  
       2013-08-29 10:41:38 +08:00
    可以使用linux版本的beyond compare,我经常用这个同步文件,用来拷文件是有进度条的,当然这个是gui的了
    Chrics
        21
    Chrics  
       2013-08-30 18:48:34 +08:00
    @ksc010 现在Win8复制的实时进度做的比之前强了也不只是一点半点,不过Linux还是以效率为主,任务的进度可以通过其他的方法来看。。
    bwlinux
        22
    bwlinux  
       2013-09-09 00:41:32 +08:00
    有个命令行工具pcp,可以实现你这个要求。
    bwlinux
        23
    bwlinux  
       2013-09-09 00:42:16 +08:00   1
    是gcp,输入错了。
    syv2
        24
    syv2  
       2013-09-14 20:05:27 +08:00
    alias cp='rsync --progress'
    嘿嘿嘿
    zayze
        25
    zayze  
       2023-04-10 06:05:15 +08:00
    ranger ,和 vim 一个风格,dd 是剪切,pp 是粘贴,有进度条
    woc ,才发现的非常无敌
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     925 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:47 PVG 02:47 LAX 11:47 JFK 14:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86