私のrsyncが128Kより大きいブロックサイズを受け入れないのはなぜですか?

私のrsyncが128Kより大きいブロックサイズを受け入れないのはなぜですか?

次のようにbig *を --block-size使用してrsyncを実行します。

rsync -avvz --rsh 'ssh -c arcfour' --block-size 1048576 --inplace --progress example.com:/big.file /big.file

次のエラーが発生します。

Invalid block length 1048576 [sender]

どちらも64ビットCentOS 6.4を実行しています。インターネット検索で--block-sizeより高い値が使用されていることを確認しましたが、これが私に適していないのはなぜですか?

*CPUを44%永遠に回転させるrsyncのバグを300GBファイルに修正しようとしているので、より大きなブロックサイズを使用しています。

ベストアンサー1

~から源泉:

int32 max_blength = protocol_version < 30 ? OLD_MAX_BLOCK_SIZE : MAX_BLOCK_SIZE;

sum->blength = read_int(f);
if (sum->blength < 0 || sum->blength > max_blength) {
    rprintf(FERROR, "Invalid block length %ld [%s]\n",
        (long)sum->blength, who_am_i());
    exit_cleanup(RERR_PROTOCOL);
}

どこ:

#define OLD_MAX_BLOCK_SIZE ((int32)1 << 29)
#define MAX_BLOCK_SIZE ((int32)1 << 17)

それぞれ536870912(512M)と(128k)です131072


バージョンが変更されました。v3.0.0そしてサポートOLD_v3.0.3に追加されました。 (リンクでは、これらの変更のいくつかの理論的根拠について説明します。)

  • [パッチ]送信者ハッシュテーブル検索で輻輳せずに処理する大容量ファイルをインポートするためのパッチです。

  • [パッチ] プロトコルのレガシーブロックサイズ制限<29を処理し、以前のrsyncバージョンを使用して大容量ファイルを転送するときに発生する問題を修正しました。

おすすめ記事