8

主に Windows ユーザーですが、rsync の大ファンです。ここで、rsync と他のツールの長所について議論したくありません...これは私の主張ではありません。

Windowsでrsyncを実行する唯一の方法は、Cygwin上で実行するように構築されたバージョンを使用することです。CygwinにはUnicodeの問題があるため、rsyncにも問題があります。

rsync をネイティブの Win32 バイナリに移植するための実際の技術的なプログラミングのハードルがあるかどうかを言うために、rsync の仕組みに精通している人はいますか?

それとも、Windows ユーザーが移植に関心を示すほどの関心がなかったのでしょうか?

移植を始めようと考えているのでお願いすることもありますが、なぜそれができないのかという点で、何か不足していないか確認したいと思います。

4

5 に答える 5

5

Windows が開いているファイルをロックする方法により、Volume Shadowcopy Service へのフックが必要になる問題が発生する場合があります。

約 2 年前、このフェローはアルゴリズムを C# に移植しました。私はコード (または提供されたバイナリ) を見ていませんが、探し始める場所か、誰かに連絡してみる場所かもしれません。
http://www.russiantequila.com/wordpress/?p=8

于 2008-08-29T16:04:44.177 に答える
1

(免責事項:私は約束します、私は自分でグーグルではありませんが、グーグル分析が私をここに連れてきました)

rsync を .net に移植しました (sig11 のリンクは私のブログです)。技術的なハードルはなく、実用的なハードルがあります。すでに述べたように、コードはかなり... 密集しています。フォローするのが難しく、コメントが完全にありません。私の作品を公開できることを大変嬉しく思いますが、残念ながら、これは商業的な取り組みの一環であったため、あまり良い状態ではありません.

私は何度も、プロトコルをリバースエンジニアリングし、既存のものとワイヤ互換性のあるゼロからの実装を行うというアイデアをいじりましたが、... 作業するのが少しきれいです。その趣旨でwikiも立ち上げたのですが… コンテンツが少ないことからもわかるように、他の項目が優先されています。誰かが私と一緒にこれに取り組みたいと思うなら、それが私が前進するために必要な推進力になるかもしれません.

このツールのコンセプトは、それが提供する機能と同様に優れていますが、*ix スペースの外側ではかなり制限されており、API の恩恵を受けることは間違いありません。

参照用のウィキ リンク:

http://www.russiantequila.com/wiki/index.php?title=Main_Page

于 2009-04-08T15:41:09.210 に答える
1

私は、win32 への移植も検討しています。重大なことが妨げになるとは思いませんが、rsync メーリング リストと別のディスカッションの両方からの証拠は、UNIX の fork() システム コールに大きく依存していることを示しています。スレッドを使用することは、win32 に適しているようです。

スレッド対フォークの議論

于 2008-09-27T08:04:41.553 に答える
0

これを見たことがありますか:

http://www.itefix.no/i2/taxonomy/term/39

私は cwrsync を何の問題もなく (そして通常の cygwin の惨めさの多くを伴って) 使用しましたが、ユニコードのファイル名はまったく必要としなかったので、その問題は見たことがありません。

ネイティブの Win32 ポートがない理由はよくわかりませんが、C# で同様のデルタ コピー システムを実装したので、しばらく前にソースを調べました。優秀な *nix ハッカーの世界から予想されるように、ソースは大部分が 1 文字の変数名であり、コメントがまったくないため、あまり役に立ちません。

于 2008-08-29T16:23:18.797 に答える
0

Visual Studio を使用してビルドできるように、rsync を MS-Windows に移植していただければ幸いです。さまざまなプロトコル エラーがランダムに、または断続的に発生しています。私は rsync を使用して約 200 台のマシンのグリッドに sw を配布していますが、通常は約 12 回の障害が発生します。GCC 4.4.2 と最新の cygwin を使用して rsync v3.0.7 をビルドしています。cygwin を必要としないバージョンを試すことができれば、とても助かります。これは、グリッド内のマシンで、私が持っているものとは異なるバージョンの別の cygwin ベースのアプリが既に実行されているためです。

rsynv メーリング リストに時間を割いてみると、MS-Windows でのプロトコル エラーの原因について意見が分かれているようです。rsync のバグであると言う人もいますが、これはソケットのシャットダウンを正常に実行できなかったもので、少し前に修正されたバグです。他の人は、rsync の基本的なプロトコル エラーであり、クライアントがサーバーに終了したことを通知せず、シャットダウンするだけであり、MW-windows サーバーがソケットで RST シグナルを取得する原因であると言う人もいますが、これは Unix では発生しません。 .

于 2010-06-04T12:08:34.940 に答える