rsyncのオプション(--partial、-partial-dir)が期待どおりに機能しない


6

私は、オプションを使用せずにrsync(Windowsでcygwinを使用)で部分転送を再開する方法を見つけようとしてい--inplaceます。

rsyncが。[filename] .2dxZ1aなどの名前で宛先ディレクトリに「部分的な」ファイルを作成することがわかりますしたがって、私の理解では、--partialオプションを使用すると、rsyncはこのようなファイルを表示し、このファイルへの転送を再開します。しかし、この--partialオプションを使用してrsyncプロセスが終了すると、rsyncコマンドを再度開始すると、それらの部分ファイルが削除されることがわかりました。おそらく、このオプションは短時間の転送中断で機能しますが、プロセスが終了して最初からやり直すときは機能しません。

このオプションに加えて、実際に--partial-dirオプションが好きで、指定する場合--partial-dir=".rsync"(周囲の引用符の有無にかかわらず)、rsyncが宛先ディレクトリに.rsyncディレクトリを作成し、ファイルを[dir] /。rsyncに移動して、それら[DIR]転送が終了したら(および削除[DIR] /。rsyncのそれはもはやそれを必要としたら)。しかし、rsyncはそのオプションを完全に無視し、通常のように宛先ディレクトリに一時ファイルを作成するだけです(再起動時に削除します)。

だから、私は疑問に思っています:私は何か間違ったことをしているのですか、それらのオプションを正しく理解していないのですか?

私のコマンドは: rsync -rt --log-file="rsync.log" --partial-dir=".rsync" --del rsync://rsync-server:port/module/ /cygdrive/local/path/

回答:


7

Windowsタスクスケジューラからこのコマンドを起動していました。コマンドを受け取ってコンソール(コマンドプロンプト)から実行すると、オプションは正常に機能しました*。

コマンドの実行の唯一の違いは、コマンドを終了しようとしたときに発生しました。コンソールでを押すとCtrl+Crsyncがエラーで終了しました

rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at ...

Windowsタスクスケジューラで、実行中のタスクを右クリックして[ 終了 ]を選択するとエラーが発生しました

rsync: read error: Connection reset by peer (104)

そのため、Windowsタスクスケジューラがプロセスを終了する方法は、rsyncが終了することを期待する方法とは異なると仮定できます。これにより、終了ルーチンを実行せずにrsyncが終了します。


*-方法--partial--partial-dir仕事についてもっと知りました。

--partialrsyncは私が見たような一時ファイルを作成しますが、rsyncが(予想される方法で)終了すると、その一時ファイルの名前を通常のファイル名に変更し(たとえば、。[filename] .2dxZ1a[filename]に変更ます)次回の実行時に部分ファイルを新しい一時ファイルにコピーします(たとえば、[ファイル名]。[ファイル名] .34cae2にコピーします)。

を使用すると--partial-dirrsyncは一時ファイルを満たし、閉じると、一時ファイルを通常のファイル名として指定したディレクトリに移動します(たとえば、。[filename] .2dxZ1aの名前[partial-dir] / [filename]に変更します)。次に、次回の実行時に、ファイルを[partial-dir]から宛先ディレクトリの新しい一時ファイルにコピーします。


トーマスには本当に役立つ言葉がいくつかあったと思うが、これは私の質問に答えた。ですから、あなたが私の答えに賛成する前に、トーマスに賛成してください!
palswim

2

あなたは正しいアイデアを持っているように見えますが、あなたの全体のコマンドを知らなければ、それを伝えることは不可能です。私にとって、これらのオプションはrsyncを(ctrl-Cで)終了して再起動すると(GNU / Linux with rsync 3.0.6)期待どおりに機能します。留意すべきことの1つは、-wholefileまたは--wholefileを含むオプション(rsyncのマニュアルページを参照)を使用すると、-partial(-dir)が機能せず、説明する症状が表示される可能性があることです。また、-partial-dirで指定されたディレクトリを見つけられないか、作成できない場合、黙って無視します。別の可能性としては、--partialが実際に機能しますが、そうではなくても最初からやり直すことはできません。転送が完了して実際のファイルが更新されると、一時ファイルを削除することを期待します。--progressを使用してこれを監視できます-0%から開始します。しかし、既に転送されたパーセンテージに非常にすばやくジャンプし、そこから続行します。小さいファイルの場合、進行状況が速すぎて多くを確認できない可能性があるため、より大きなファイル(接続先への接続速度に応じて100 MB以上)を試してください。お役に立てれば。編集:--partialと同様に、転送中に--partial-dirが宛先ディレクトリに一時ファイルを作成するようです。転送が停止した場合にのみ、指定した部分ファイルディレクトリに移動するため、最初は--partialと違いはないようです。--partialと同様に、転送中に--partial-dirが宛先ディレクトリに一時ファイルを作成するようです。転送が停止した場合にのみ、指定した部分ファイルディレクトリに移動するため、最初は--partialと違いはないようです。--partialと同様に、転送中に--partial-dirが宛先ディレクトリに一時ファイルを作成するようです。転送が停止した場合にのみ、指定した部分ファイルディレクトリに移動するため、最初は--partialと違いはないようです。


私は知っている--partial私は、ログオプションを使用していますので、動作していない、とのrsyncを終了し、プロセスを再起動した後、最初の行のいずれかが常にある2010/08/01 01:00:00 [4336] *deleting .[filename].444444
palswim

この時点での最良の推測は、--wholefileオプションをトリガーしているということです(暗黙的に?)。rsyncが単に--partialを無視した場合、一時ファイルを削除する理由はありません...これは、一般的な問題ではなく、システム/特定のコマンドの問題であるように見えるため、いくつかのテストを実行する価値があります最小限のコマンド(他のオプションなし)および多分他の(より新しい)バージョンのrsyncを使用します。Linux Live CDからrsyncを試して、同じ結果が得られるかどうかを確認できます...宛先でrsyncデーモンを使用していますか?その場合、すべてのオプションを認識する必要もあります。
トーマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.