ファイルのコピー時に進行状況バーを作成する方法

ファイルのコピー時に進行状況バーを作成する方法

私のLinuxシステムから大容量ファイルをコピーする必要があります。

例:

cp source.txt target.txt

各コピーファイルのコピーがまだ進行中であることを示すために進行状況バーを作成したいと思います。

はい」

cp file file1

ファイルコピー>ファイル1…

cp moon mars

コピー月>火星...

答え1

つまり、cp進行状況バー出力の基本機能が見つかりません。なぜ? 多くの理由。しかし、いくつかのオプションがあります。

  1. さまざまなツールを使用してください。 rsync、@ user1404316が述べたように--progress

    rsync -P largeFile copyLocation
    
  2. 追加の意味スキームが必要ない場合は、cpリダイレクトを介して(「Pipe Viewer」)を使用してrsync新しいファイルを作成してください。pvstdout

    pv < largeFile > copyLocation
    
  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
    
  4. もう1つの選択肢は、gcp進行状況バーに対して必要な操作を正確に実行することです。

    gcp largeFile copyLocation
    
  5. 別のオプションはURLcurl処理機能を乱用しますfile://

    curl -o copyLocation file:///path/to/largeFile
    
  6. シェルスクリプトを書くことができます

答え2

rsync機能を含む大容量ファイルをコピーするための優れた機能を備えたコピープログラムであり、--progress転送中にデータを減らす(したがってコピー時間を節約する)転送中の圧縮形式を持っています。

rsync --progress file1 file2

rsyncネットワークの切断によって中断された可能性があるレプリカを復元する機能もあります。これを有効にするには、オプションを使用する必要があります--partial --append-verify。ネットワーク経由でコピーするときに考えることができる唯一の欠点は、rsync2台のコンピュータにインストールする必要があることです。発信者と受信者。man詳細やその他の機能については、該当ページをご覧ください。

何らかの理由でインストールできないrsync場合、またはインストールしたくない場合は、簡単で良い選択肢は次のとおりpvです。パイプビューアコマンド、それはまさにあなたが要求したものです。

pv from-file > to-file

pvまた含まれますたくさん可視化オプション。man利用可能なすべての特典を表示するには、そのページを参照してください。一般的に使用されるいくつかのオプションは次のとおりです。

-p, --progress
-t, --timer
-e, --eta
-r, --rate
-a, --average-rate
-b, --bytes

関連情報