私はPython 3を使ってハードドライブをバックアップするコードを書いています。
私の問題は、一部のRAIDやその他のエントリが、一部のドライブの最初と最後のメガバイトの内容を隠すことです。そのようなコンテンツがすべてコピーされ復元されたことを確認したいと思います。最初のメガバイトは簡単でしたが、最後のメガバイトを達成するための最良の方法はよくわかりません。
最後の1MBを消去するための古いスレッドを見ましたが、答えはほとんどシェルにありました。例えばハードドライブの最後の1MBをクリア
しかし、読んで復元したい、Pythonを使用したいので、助けが必要です。
答え1
通常のファイルと同様に、ブロックデバイスにもサイズがあります。最後のメガバイトが始まる場所を計算するために問い合わせることができますseek
。
# assume you've already `open()`ed the file as f
# seek to end of file
f.seek(-2**20, os.SEEK_END)
last_MB_of_data = f.read()
backupfile = open("./end_backup", "wb")
backupfile.write(last_MB_of_data)
backupfile.close()
または同様です。
しかし、もちろん、これはブロックデバイスの起動と同様に、Linuxが見ることができるだけです。ハードウェアがOSで最初または最後のMBを隠す場合、これを回避する方法はありません。何もできません。
最初と最後のメガバイトを別々にバックアップすることはまれです。途中にある内容がなければ役に立たず、その間にある内容がなければ役に立ちません。したがって、とにかく、デフォルトでは常にその領域を解放するフルディスクバックアップを実行するか、データ関連部分のみをバックアップします(たとえば、関連パーティションのみまたはファイルシステムによって提供されるファイルのみをバックアップします)。無関係です。