Python을 사용하여 드라이브의 마지막 메가바이트를 읽고 복구하는 방법

Python을 사용하여 드라이브의 마지막 메가바이트를 읽고 복구하는 방법

저는 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를 숨기는 경우 이를 피할 수 있는 방법은 없습니다. 아무것도 할 수 없습니다.

첫 번째와 마지막 메가바이트를 별도로 백업하는 것은 드문 일입니다. 중간에 있는 내용이 없으면 쓸모가 없고, 그 사이에 있는 내용이 없으면 쓸모가 없습니다. 따라서 어쨌든 기본적으로 항상 해당 영역을 확보하는 전체 디스크 백업을 수행하거나 데이터 관련 부분만 백업합니다(예: 관련 파티션만 또는 파일 시스템에서 제공하는 파일만 백업). 무관하다.

관련 정보