如何在复制文件期间创建进度条

yae*_*ael 1 file-copy

我需要在我的 Linux 机器上复制大文件。

例子:

cp source.txt target.txt
Run Code Online (Sandbox Code Playgroud)

我想创建进度条,以显示每个副本文件上的副本仍在进行中

例子”

cp file file1
Run Code Online (Sandbox Code Playgroud)

复制文件 > 文件 1 .....................

cp moon mars
Run Code Online (Sandbox Code Playgroud)

复制月亮>火星......

hun*_*eke 6

简而言之,您找不到cp进度条输出的本机功能。为什么? 很多原因。但是,您有一些选择:

  1. 使用不同的工具。 rsync,正如@user1404316 所提到的--progress

    rsync -P largeFile copyLocation
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果你不需要额外的语义cprsync照顾,创建一个新的文件pv通过重定向(“管子查看器”) stdout

    pv < largeFile > copyLocation
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果您确实需要额外的语义,则可以使用progress,尽管它没有专门给出栏。它附加到已经运行的进程,因此您可以像这样调用它:

    # In one shell
    $ cp largeFile copyLocation
    
    # In another shell
    $ progress -m
    [ 4714] cp /home/hunteke/largeFile
            1.1% (114 MiB / 10.2 GiB)      # -m tells progress to continually update
    
    Run Code Online (Sandbox Code Playgroud)
  4. 另一种选择是gcp,它完全符合您使用进度条的要求:

    gcp largeFile copyLocation
    
    Run Code Online (Sandbox Code Playgroud)
  5. 另一个选项滥用curl了处理file://url的能力:

    curl -o copyLocation file:///path/to/largeFile
    
    Run Code Online (Sandbox Code Playgroud)
  6. 你可以写一个shell脚本