web-dev-qa-db-ja.com

進行状況を表示しながらrsyncで複数のファイルを移動する方法は?

このコマンドでファイルを移動できます:

mv -t /mnt/hdd /home/me/movies/movie1.avi /home/me/movies/movie2.avi

問題は、進行がまったく表示されないことです。そのため、操作が1%完了しているか80%完了しているかはわかりません。

Rsyncが進行状況を表示できることを知っています。

では、上記のコマンドのrsyncバリエーションはどのように見え、操作の進行状況も表示されますか?

ありがとうございました

4
Askerman

Coreutils Progress Viewerを使用できます progress Install progress 。インストール後1、単にmvプロセスをバックグラウンドに送信し、progressにそのPIDを提供します。

mv -t /path/to/file1 /path/to/file2 & progress -mp $!

progress -wを使用して、実行中のすべてのcoreutilsプロセスとその進行状況のリストを表示します。その他のオプションと例については、man progressとその githubページ を参照してください。

さまざまなアプローチの多くのでさらに読む:
ファイルを移動して進行状況を表示するには(たとえば、進行状況バーを使用して)?

1:残念ながらUbuntu 14.04を使用している場合、残念ながらソフトウェアを自分で作成する必要があります。上記のリンクされたgithubページを参照してください。

4
dessert

バックグラウンド

  • mvは、同じファイルシステム内のファイル/ディレクトリを移動するときにのみ、iノードへのリンクの名前を変更します[パーティション]
  • mvはファイル/ディレクトリをコピーし、その後、ファイルシステム[パーティション]間で元のファイル/ディレクトリを削除します。

この例では、別のファイルシステムに移動するため、rsyncは同じジョブ(コピー)を実行します。後で元のディレクトリツリーを削除するコマンドを追加できます(コピーが実際に機能したことが確実な場合)。これはシェルスクリプトで実行できます(少なくとも操作で安全に感じるまで、手動で検査できます)。

man rsyncから

   -P     The -P option is equivalent to --partial --progress.   Its  pur‐
          pose  is to make it much easier to specify these two options for
          a long transfer that may be interrupted.

          There is also a --info=progress2 option that outputs  statistics
          based  on the whole transfer, rather than individual files.  Use
          this flag without outputting a filename (e.g. avoid -v or  spec‐
          ify  --info=name0)  if you want to see how the transfer is doing
          without scrolling the screen with a lot of  names.   (You  don’t
          need   to   specify  the  --progress  option  in  order  to  use
          --info=progress2.)

同じrsyncコマンドラインを再度実行します。何も転送されない場合、ファイルがコピーされ、元のファイルまたはディレクトリツリーを削除できます。

rsyncでコピー

$ ls -l
totalt 2064196
-rw------- 1 sudodus sudodus 1921843200 apr 26 18:44 orig.iso
-rw-rw-r-- 1 sudodus sudodus  191889408 maj 23  2016 test.iso
$ rsync --info=progress2 -Ha *.iso /tmp
  2,113,732,608 100%  171.10MB/s    0:00:11 (xfr#2, to-chk=0/2)

チェック(希望する場合)

$ rsync --info=progress2 -Ha *.iso /tmp
          0   0%    0.00kB/s    0:00:00 (xfr#0, to-chk=0/2)

でファイルとディレクトリを削除する

rm -r *.iso  # remove the same as the source in the rsync command line
4
sudodus

次のようになります。

rsync -aP /home/me/movies/movie1.avi /home/me/movies/movie2.avi /mnt/hdd

例:

~ rsync -aP /usr/bin/{free,man} /tmp
sending incremental file list
free
         18,808 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=1/2)
man
        107,008 100%  102.05MB/s    0:00:00 (xfr#2, to-chk=0/2)
1
muru