ブログ

  • ファイルコピー・移動等の進捗を表示する

    Linuxのファイルコピーコマンド cp はよく使うコマンドですが、巨大なファイルをコピーする際に進捗状況が欲しくなります。そんなときに役立つ代替方法がこちらです。

    1. rsync コマンドを使う

    多くの場合、cp の代わりとして推奨される方法です。--progress オプションで、転送率、速度、残り時間をリアルタイムに表示できます。

    rsync -avh --progress source_file destination

    2. progressコマンドを併用する

    既に cp コマンドを実行してしまい、後から進捗を知りたい場合に便利です。別のターミナルで実行すると、動作中の cp や mv の進捗状況をスキャンして表示してくれます。

    補足: sudo をつけて実行した cp や mv はsudoをつけて、progress を実行しないと、表示されません。

    progress -m
    
    [xxxxxx] cp source_file
             26.1% (37.5GiB / 140.0 GiB) 33.0 MiB/s remaining 0:17:39

    3. dd コマンドを使う

    ディスクイメージの作成などによく使われる dd コマンドも、オプションで進捗を表示できます。また、巨大なファイルの場合はRead/Writeのブロックサイズを大きく(例: 4MB、16MB)指定することで、ディスク本来の速度に近いパフォーマンスが出せます。

    dd if=source_file of=destination status=progress
    dd if=source_file of=destination bs=16M status=progress conv=fsync

    ピーが「一瞬で終わったように見えている」可能性

    巨大なファイルを USB メモリ等にコピーしている場合、OS の「書き込みキャッシュ」機能により、実際にはまだ書き込んでいる最中なのに cp コマンド自体は終了したと誤認され、progress の監視対象から外れてしまうことがあります。 

    もし cp がすでに終了してプロンプトに戻っているのに、ディスクのアクセスランプが点滅しているような場合は、以下のコマンドで「物理的な書き込み」が終わるのを待ってください。

    sync が終了するまでが、本当のコピー時間です。

    sync
  • Hello world!

    WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。