ハードリンクファイルを回復する方法

ハードリンクファイルを回復する方法

他のファイルシステムの日付を示す一連のアーカイブバックアップを含むファイルシステムがあります。バックアップでは、ハードリンクを使用して連続アーカイブインスタンス間のデルタのみをコピーします。ドライブに一部のデータが破損して交換しようとしていますが、一部のファイルが破損して正常にコピーされません。修復に使用できる破損したファイルの別のコピーがありますが、ハードリンク構造で破損したファイルを置き換えるのに最適な方法がわかりません。

01/01       02/01       03/01        
 -file1  >>  -file1  x               Added in 01/01, deleted by 03/01
 -file2  >>  -file2  >>  -file2      Added in 01/01, never deleted
             -file3  >>  -file3      Added in 02/01, never deleted

file2上記のケースでは、2つ(または計算方法によって3つ)のハードリンクを持つデータストアがあります。基本ファイルデータが破損している場合は、バックアップファイルを使用して復元し、file2ハードリンクを維持するにはどうすればよいですか?

追加情報:

  1. 生データは物理デバイスにフォルダ構造として保存されます。
  2. バックアップ/アーカイブコピーには、元のデータデバイス(1.)に保存されている完全なフォルダ構造があります。時間的に連続しており、重複がなくなり、バックアップデバイスにハードリンクされています。
  3. 復元するコピーは、長期コールドストレージ用のバックアップデバイスのイメージを保存する3番目のデバイスです。
  4. (2.)に記載されているバックアップ装置でエラーが発生しました。バックアップ/アーカイブ構造内の元の場所(1.)またはコールドストレージデバイス(3.)からこのバックアップデバイスの破損したファイルを復元したいと思います。
  5. バックアップロジック:

    <last backup folder>5.1。デバイスで最後の日付/時刻スタンプが付けられたバックアップフォルダを探す(2.)

    5.2。<new folder>現在の日付/時刻スタンプを使用して新しい空のバックアップフォルダを作成します。

    5.3。最後のバックアップフォルダにファイルのハードリンクコピーを作成します。

    cp -al <last backup folder> <new folder>
    

    5.4。 (1.)のデータを<source data>新しいバックアップフォルダにコピーし、(5.3.)で作成したハードリンクバックアップフォルダを上書きします。

    rsync -azH --delete <source data> <new folder>
    

アップロード日:2017年3月14日

1つの回答を提案しようとした後、ターゲット上の破損したファイルを所定の場所に置き換えることはできません。明らかに、その場所のターゲットにある種のハードエラーが発生し、交換データをディスク上の新しい物理的な場所に移動する必要がありました。

答え1

使用rsync -azH --inplace

マニュアルページには、このオプションに関する多くの警告があります。

- 所定の位置に

このオプションは、ファイルデータを更新する必要があるときにrsyncがファイルを転送する方法を変更します。ファイルの新しいコピーを作成して完了したら、その場所に移動するデフォルトの方法ではなく、rsyncは更新されたデータをターゲットファイルに直接書き込みます。これにはいくつかの効果があります。

(1)使用中のバイナリを更新できません(オペレーティングシステムがこのようなことが発生しないようにしたり、データを交換しようとしているバイナリで例外が発生したりクラッシュが発生したりします)。

(2) ファイルのデータは転送過程で一貫性のない状態になります。

(3)転送が中断されたり更新が失敗した場合、転送後のファイルデータが一貫性のない状態になることがあります。

(4)書き込み権限がないファイルは更新できません。

(5)rsyncの増分転送アルゴリズムは、ファイルの後半にコピーされる前にターゲットファイルの一部のデータを上書きすると効率が低下する可能性があります(例外は、このオプションが--backupで使用される場合です)。バックアップファイルを転送用のデフォルトファイルとして使用するのと同じくらいスマートです。)

警告:他のユーザーがアクセスするファイルを更新するためにこのオプションを使用しないでください。このオプションを使用してコピーを作成するときは注意してください。このオプションは、ブロックベースの変更や追加データを含む大容量ファイルを転送したり、ネットワークバインディングではなくディスクバインディングシステムに役立ちます。

このオプションは--partial(中断された転送はファイルを削除しないため)を意味しますが、--partial-dirおよび--delay-updatesと競合します。 rsync 2.6.4より前では、--inplaceは--compare-destと--link-destとも互換性がありませんでした。

関連情報