質問: Windowsをメインに使っているので、とりあえずマニュアル通りにrsyncを使ってみましたが、エラーになってしまいます。 rsync.shというファイルの中にrsyncを記入して、Windowsでいうバッチファイルをコマンドラインからrsyncを叩いて起動しています。 rsync -avvv --progress --delete src dest 具体的には途中で止まってしまいます。エラーにならずにコピーできているファイルやフォルダもあります。 権限の関係でエラーになってしまっている気がしますが、自信はありません。 Ubuntuの環境によるエラーの気もしますが、やはり自信はありません。 `sudo rsync`としてみたり、`--chmod=a+rwx` をつけてみましたが、同じように失敗します。 最高権限で実行しているのに、環境変数?などの設定により、実際は最高権限にならないことがLinuxではあるようですが、それが原因かもしれません。 エラーにならなかったファイルと、エラーになったファイルの権限をlsコマンドで調べてみましたが、いずれも同じ権限のようです。 ls -l success.txt ls -l erorr.txt -rw-rw-r-- 1 よろしくお願いします。 追記 エラーメッセージはなにも表示されません。途中で止まってしまいます。 しかたなくコマンドラインをCtrl+Cで停止すると、そこでエラーメッセージはでます。 コピー元のフォルダによっては、エラーは起こらずに正常に終了することもありますが、そのときにコマンドラインをCtrl+Cで停止したときに表示されるエラーメッセージは下記のようになります。 rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at io.c(504) [generator=3.1.1] 途中で止まってしまうコピー元のときに、Ctrl+Cで停止したときに表示されるエラーメッセージは下記のようになります。 rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(632) [sender=3.1.1] ちなみに、オンラインではなく、ローカルからローカルのにコピーしています。 追記2 [receiver] send_msg_int(100, 152) recv_files(/error/error.txt.gif) [generator] send_msg(3, 90) rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at io.c(504) [generator=3.1.1] [generator] _exit_cleanup(code=20, file=io.c, line=504): about to call exit(20) [generator] send_msg_int(86, 20) [sender] send_msg(86, 0)
回答: > > recv_files(/error/error.txt.gif) > > > ここで停止して、Control-C を入力することで、 > > [generator] send_msg(3, 90) > > > 以降が表示されるということで合っていますでしょうか。 また、 > > recv_files(/error/error.txt.gif) > > > ここは手元の環境では相対パス(先頭の / が無い)になるのですが、sample01 さんの環境では絶対パスになっています。 また、ファイル名は **error.txt** なのか、**error.txt.gif** なのか。 コピー元、コピー先のファイル、ディレクトリ構造がどうなっているのか(ls -lR など)、実際のコマンド引数(src, dest)はどうなのか、再現できる情報を開示くださいませんでしょうか。 **(2017/04/12 19:00) 追記** コピー元もコピー先も USBメモリーなのですね。 ファイルシステムは何でしょうか? (1) ローカルディレクトリ→ローカルディレクトリではどうなるのか (2) USBメモリー→ローカルディレクトリではどうなるのか (3) ローカルディレクトリ→USBメモリーではどうなるのか を調べることにより、原因の絞り込みができるのではないかと思います。 ファイルシステムに問題があるのか、USBメモリーへの I/O 自体に問題があるのか、など。 フォルダ名、ファイル名の長さや、スペースを含むファイル名の場合、ということであれば、ファイルシステムに原因があるのかもしれません。 もし、ファイルシステムが FAT など、オーナー、グループ、パーミッション情報が保持されないものであれば、ローカルディレクトリ→USBメモリーは rsync よりも tar アーカイブで持たせた方がいいと思います。 **(2017/04/13 00:03) 追記** USBメモリーも Ext4 なのですね。 Control-C で中止した後のメッセージについては、正直わかりません。 ローカルディレクトリ→ローカルディレクトリでも停止するということは、OS の I/O に問題があるのか、それとも、ファイル自体に原因があるのか ... * 再確認ですが、rsync 実行中の "ps aux" の STAT は? "D" だと実行中(I/O 待ち)です。 * /var/log/syslog に何かエラーが出ていないでしょうか。 * rsync ではなく、"cp -afv $src $dest" でも停止しますでしょうか。 sample01 さんの環境でしか発生しないようですので、Q&A では解決できないかもしれません。