私たちのシステム管理者は、ハードドライブのスナップショットを作成するバックアップシステムを作成しました。
スナップショットから古いバージョンを復元しようとすると、次のようになります。
cp /path/to/snapshots/foo.bar /path/to/folder/foo.bar
エラーが発生します:
cp: `/path/to/snapshots/foo.bar' and `/path/to/folder/foo.bar' are the same file.
ファイルを削除してコピーすることはできますが、cpでこれを行う方法があるかどうか知りたいと思いました。
次の理由により、ファイルがリンクされていないことがわかります。
それにもかかわらず、inode
ファイルの数は同じです
クラスターはRed Hat Linux上で実装されており、ファイルシステムが何であるかわかりません
df結果:
Filesystem 1K-blocks Used Available Use% Mounted on
<ipadress>:/vol/hpc/storage
67633152 67633152 0 100% /storage
<ipadress>:/vol/hpc/storage
2186805248 982498048 1204307200 45% /storage
統計結果:
File: `/path/to/snapshots/foo.bar'
Size: 404 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 19750461 Links: 1
Access: (0644/-rw-r--r--) Uid: (<num1>/ yotama9) Gid: ( <num2>/ <groupname>)
Access: 2012-01-22 00:03:27.246852000 +0200
Modify: 2012-01-19 23:10:32.746397000 +0200
Change: 2012-01-19 23:10:32.746397000 +0200
File: `/path/to/folder/foo.bar'
Size: 404 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 26335134 Links: 1
Access: (0644/-rw-r--r--) Uid: (<num1>/ yotama9) Gid: ( <num2>/ <groupname>)
Access: 2012-01-24 16:03:48.732453000 +0200
Modify: 2012-01-24 16:03:30.728900000 +0200
Change: 2012-01-24 16:03:30.728900000 +0200
通常、ファイルシステムの実装は、特定のマシンの任意の時点で、各ファイルがデバイスID( stat
構造体のst_dev
フィールドの組み合わせ)によって一意に識別できることをアプリケーションプログラムに保証することになっています。 )とそのiノード(st_ino
フィールド)。デバイスIDは、ファイルがマウントされているファイルシステムを示し、iノードは特定のファイルシステム内の1つのファイルを特徴付けます。 cp
は、2つのファイルが同じデバイスIDと同じiノードを持っている場合、それらが同一であると見なします。
LocalhostへのNFSマウントなどのさまざまな方法でアクセスされる場合、ファイルに複数の(デバイスID、iノード)ペアを設定することができます(このようなシナリオはエキゾチックな傾向があります)。
異なるファイルが同じ(デバイスID、iノード)ペアを持つことはできません。ただし、これはファイルシステムの実装次第です。スナップショットを変更せずにソースのコンテンツを変更できる場合、スナップショットはソースとは異なるデバイスIDを示すと思いますが、一部の実装ではこれが行われない可能性があります。
ファイルを変更する以外は、テストでは何も証明されないことに注意してください。 1つのハードリンクを削除しても、ファイルの他の名前は削除されません。スナップショットではオンデマンドでのみファイルをコピーするのが一般的であるため、スナップショット内のファイルがスナップショット外のファイルとまったく同じであれば、ファイルの内容が同じである限り異常ではありません。通常、iノード番号は同じままです。
ファイルを変更するときは、1つのファイルを削除せずに、同じ名前で別のファイルを作成した直後に、同じファイルに書き込んでいることを確認してください。
同じデバイスIDと同じiノードで内容が異なる2つの異なるファイル(スナップショットとソース)がある場合、ほとんどのアプリケーションはそれらが同じであると信じます。スナップショットテクノロジーに依存するファイルの等価性をテストする方法を見つける必要があります。それ以外の場合は、両側のコンテンツをチェックサムするか、ターゲットを体系的に削除する必要があります。