
rsyncを使用してリモートファイルを転送せずに単にチェックサムを取得できますか?
これは、比較する一致するローカルファイルがない場合は、多くの帯域幅を使用せずにリモートファイルの整合性を確認するのに役立ちます。また、リモートシステムへのフルシェルアクセス権はありませんが(ログインや実行md5sum
などの操作はできません)、rsyncd、制限されたSSHなどを介してrsyncアクセス権がある場合
答え1
君はできます
rsync --checksum --dry-run --checksum-choice=xxh128 --out-format="%C" host.example.com:/tmp/foo/hello.txt /dev/null
これにより、hello.txt
リモートファイルのxxh128チェックサムが16進形式の標準出力(たとえば)に書き込まれます6bba86c7e069f56d5a10b435f1c8e49c
。
どこ:
--checksum
強制チェックサムの計算--dry-run
何も送信されないように--checksum-choice=xxh128
xxh128 ハッシュアルゴリズムの使用を要求します。xxh64
あるいは、md5
他のさまざまな方法を使用することもできます。rsync --version
これに関するカスタマーサポートをご覧ください。これは、リモートサーバーが必要なアルゴリズムもサポートしている場合にのみ機能します。一部のサーバーではオプションがまったく提供されない場合があります。 md5のみをサポート
--checksum-choice
し、提供されていない場合は使用しますが--checksum-choice-md5
。--out-format="%C"
送信された各ファイルのチェックサムのみが出力されます。 「ログ形式」オプションを参照してください。rsyncd.conf(5)追加情報を出力できます。 Useは、入力(それぞれなど)で使用できるのと--out-format="%C %f"
同じ形式で出力を生成します。xxh128sum
xxh128sum --check
md5sum
/dev/null
ローカルの宛先ファイルとして使用できるものが必要です。ターゲットファイルを指定しないと、rsyncはリモートファイルのみを一覧表示し、リモートサーバーにチェックサムを要求しません。
また、複数のリモートファイルに一致するパターンを提供したり、-r
ディレクトリツリー内のすべてのファイルを再帰的に検証したりするために使用されます。この場合、/dev/null
targetを既存のローカルディレクトリの名前に変更してください。たとえば、そのディレクトリ/tmp
には記録されません。
リモートrsyncは応答を生成する前にすべてのファイルをチェックサムできるため、タイムアウトが発生すると問題が発生する可能性があります。