Ubuntu / Linuxにcopy-and-verifyコマンドはありますか?


23

すべてのデジタル写真をいくつかの場所にバックアップします。私はcpコマンドを使用していますが、個人的な価値を考えて、より信頼性の高い方法があるかどうか疑問に思い始めました。私はLinux、Bash、Perlなどに慣れていないので、md5ハッシュをコピーして比較するために何かを書くことができましたが、何かが既に存在するのではないかと思っていました(再発明、車輪、その他)。

コピーと(verify | valid | check | hash | confirm)のほとんどのグーグルは、rsyncを起動します。ただし、私が知る限り、rsyncはハッシュを使用して、ファイルの更新が必要かどうかを確認します。その後、ハッシュ比較を実行しません。

この用途では、特にファイルはバイナリであり、通常は8〜10 MBです。ユーティリティの推奨事項やDIYソリューションのガイダンスは大歓迎です。


どの程度ユニゾン?これは双方向の同期に使用されますが、ファイルのチェックサムを確実にチェックします。
テーパー

回答:


19

からman rsync-cオプションの下で:

-c、-checksum:mod-timeとサイズではなく、チェックサムに基づいてスキップします

rsyncは、ファイルが転送されるときに生成されるファイル全体のチェックサムをチェックすることにより、転送された各ファイルが受信側で正しく再構築されたことを常に検証しますが、転送後の自動検証はこのオプションとは関係ありません転送前「このファイルを更新する必要がありますか?」チェック。


7
一部の人々は、rsyncマニュアルがデフォルトのポストコピーチェックについて誤解していると考えました:unix.stackexchange.com/a/66702/148560そのようなチェックはないようです。すべてのコピーを検証するには、-checksumオプションを使用して別のrsyncを実行する必要があります。
ロタレティ

5

数年前、あなたと同じ要求がありました。私が選んだ解決策は、ストレージサーバーでZFS-FUSEドライバーを介してZFSを使用することでした。私の考えでは、個人の写真、スキャンしたドキュメント、およびその他の類似ファイルは、たまにしかアクセスできないものであるため、ファイルが破損していることに気付くまでに非常に長い時間、たとえば1年以上かかることがありますドライブエラーなど。

その時までに、私が持っているすべてのバックアップコピーは、このビットロットバージョンのファイルである可能性があります。

ZFSには、ドライブがデータの読み取り中に読み取りエラーを報告しなくても、個々のディスクに保存されているデータのエラーを検出して修復できるという点で、RAID-5よりも利点があります。チェックサムを介して、ディスクの1つが破損した情報を返したことを検出し、冗長データを使用してそのディスクを修復します。

ZFSのチェックサムの設計方法のため、私はそれを利用して、頻繁に使用しないデータを長期間保存できると感じました。毎週「zpool scrub」を実行し、すべてのデータを調べて再読み取りし、チェックサムを検証します。

ZFS-FUSEは、ここ数年で非常によく機能しました。

遠い過去に、クライアントのために、特定のディレクトリの下に保存されているすべてのファイルのチェックサム情報を保存するデータベースシステムを実装しました。その後、定期的に実行し、データベースに保存されているチェックサムに対してファイルをチェックする別のスクリプトがありました。これにより、破損したファイルをすばやく検出し、バックアップから復元できました。基本的に、ZFSが内部的に行うのと同じ種類のチェックを実装していました。


なぜダウン投票なのですか?コメントが残されていないので、「-1同意しない」と仮定します。:-)
ショーンレイフシュナイダー

...しかし、どの部分で意見が違うのですか?質問については少し話題から外れているかもしれませんが、これは私には堅実に聞こえます。私はdownvoteは...「という質問には答えられない」のではなく、上記ではいくつかの本当の欠陥に関する気づかたちを残すことを願って
Arjan

今朝、私はicyrockがビット腐敗の心配のために尋ねていると思っていたことに気付きました。それが私の懸念でした。しかし、それはどういうわけか異なるでしょう。ファイルの時間を変更せずにファイルの内容を合法的に変更するユースケースを想像することはできませんが。
ショーンレイフシュナイダー

OPの懸念は、転送中のデータ破損だったと思います。ファイルをコピーすると、コピーは元のファイルとは異なるものになります。
ジョンベントレー

btrfs?...チェックサムを持っており、ネイティブであること
ドミトリーKudriavtsev


1

私はこのユーティリティ(LinuxおよびWindows)を見つけました。それはあなたが望むこと(ハッシュコピー+ログによるハッシュ検証)を実行します:http : //sourceforge.net/projects/quickhash/

唯一の欠点は、GUIとしてのみ存在することです(コマンドラインアクセスなし)

v1.5.0以降、選択されたソースフォルダーはハッシュされ、コピーされて宛先フォルダーに再構築され、そこでコンテンツが検証のために再びハッシュされます。1.5.5以降、選択したファイルマスクも使用できます(* .doc; * .xlsなど)。


0

ファイルをローカルにコピーしている場合(などのcp代わりに参照することで暗示されているようにscp)、cmpソースファイルと宛先ファイルのみ...しかし、現実的には、cp何らかの種類のエラーを発行していない場合(コマンドラインまたは実行戻り値)、動作していないと信じる理由はありません。

正当な冗長バックアップが本当に必要な場合は、dropboxのようなリモートソリューションを検討してください。


+1。1つではなく2つのコマンドが必要であるにもかかわらず、この答えが問題の完全に有効な解決策であると思われるため(どうも私には見える)、なぜこの答えがダウン票されたのかは明らかではありません。
ジョンベントレー

複数のファイルやフォルダーを考慮しないため、この回答を使用するには、ループを使用してスクリプトを作成する必要があります。
Gringo Suave
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.