「cp」でコピーすると、ターミナルにプログレスバーが表示されますか?


33

cpを使用してターミナルでファイルをコピーするときにプログレスバーを表示することはできますか?


2
rsync代わりに使用することも検討できます。
アスマス

サードパーティのツールをインストールせずに全体的なプログレスバーでこれを行う方法はありますか?多分スクリプトか何か?
rraallvv

回答:


49

代わりにrsyncを使用できます。

rsync --progress /copy/from /copy/to

1
Speedwise、rsyncとcpのどちらが速いですか?
-daviesgeek

コピーされるすべてのファイルが宛先に存在しない場合、顕著な違いはないと思います。いくつかのファイルが宛先に存在する場合、rsyncはいくつかのチェックを行うため、ファイルは異なります。その場合、Rsyncは通常(常にではありませんが)高速になります。
バハマ

2
を使用rsync -P /copy/from /copy/toするとrsync --partial --progress /copy/from /copy/to、コピーの進行状況が表示され、転送が切断された場合に転送が再開されます。
gh0st

また、cpと同様に、-rディレクトリをスキップしないようにするフラグが必要です
Alexander-Reinstate Monica

21

の間cpCtrlT、現在のパーセンテージを表示します(少なくともmacOSでは)


すごい!
felix021

1
これが機能する理由は、信号をCtrl-t送信SIGINFOするのと同じ方法で信号をCtrl-c送信SIGINTするためです。たとえばkill -INFO、キーを押し続けたくない場合は、別のシェルでループを使用して問題のプロセスを繰り返し実行できます。これはシグナルであるため、他のユーティリティ、たとえばとも連携しますddCtrl-tそしてSIGINFOBSDから継承されます。
HTNW

1

cpを使用して大きなファイルまたはディレクトリをコピーする場合は、「アクティビティモニター」を開き、「ディスク」タブに移動して「cp」プロセスを探します。ここでは、最後のブート以降に書き込まれたバイト数を追跡​​することができ、進行状況の大まかなアイデアを提供します。(OS X 10.10)。

お役に立てば幸いです!


0
#!/bin/sh
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0

それは完璧ではありませんが、動作します...ディレクトリパスにドロップして、それに似た名前を付けます。


待って...どうやってそれを実行させるのですか?
-daviesgeek

2
straceこの回答が書かれた時点(2011年7月)でOS Xにコマンドがあったかどうかは思い出せませんが、今日は間違いなくありません。
ティムラディック

macOSでこれを実行する方法はありますか?
rraallvv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.