얼마 전 저는 Linux 폴더를 제가 갖고 있는 Windows 디스크 드라이브에 백업했습니다. 최근에 이 파일을 검사했을 때 원치 않는 숨겨진 파일과 폴더를 실수로 많이 복사했다는 사실을 깨달았습니다. 이 파일을 안전하게 삭제하고 싶지만 NTFS(저널링 파일 시스템)에서는 정의되지 않았습니다. 그래서 차선책은 파일을 그대로 유지하면서 덮어쓴 다음 여유 공간을 덮어쓰는 것이라고 생각합니다.
Linux 백업이 포함된 폴더에 CD를 넣고 테스트해 보니 find . -regex '.+/\..*'
삭제하고 싶은 모든 파일이 발견되었습니다. 그러다가 find . -regex '.+/\..*' -execdir shred -x -n 1 '{}' ';'
컴퓨터에서 도망쳤어요. 몇 시간 후에 다시 돌아왔을 때 디렉토리를 변경하려고 시도했는데 I/O 오류가 발생했습니다. 재설치를 시도했지만 오류가 더 많이 발생했습니다. 이제 드라이브의 파티션이 손실되었습니다.
ntfsck를 실행하고 다음 응답을 얻습니다.
Boot sector: Bad jump.
Boot sector: Bad NTFS magic.
Boot sector: Bytes per sector is not a multiple of 512.
sectors_per_cluster (161) is not a power of 2.
Failed to read file record at offset 5277682939987718400 (0x493e18abeb1b7100).
Loading $MFT runlist failed. Trying $MFTMirr.
Failed to read file record at offset 1872635234051646016 (0x19fcefd2df876240).
Loading $MFTMirr runlist failed too. Aborting.
NTFS signature is missing.
실수로 드라이브 전체를 지웠나요? 그렇다면 내가 뭘 잘못하고 있는 걸까?
답변1
find 명령은 훌륭하고 shred 명령의 옵션도 마찬가지입니다. 내가 의심하는 것은 shred가 NTFS와 Linux NTFS 모듈이 좋아하지 않는 일을 하고 있다는 것입니다. Shred는 데이터를 덮어쓰기 위해 여러 번 쓰고 다시 쓰고 다른 "비정상적인" 작업을 수행하려고 시도합니다. Linux NTFS 드라이버가 이를 위해 구축되지 않았을 수도 있습니다.
파일 시스템을 마운트하려고 할 때 오류가 발생한다는 사실은 파일 시스템 수준에 문제가 있음을 나타냅니다. shred에 넣은 옵션은 장치에 직접 쓰지 않고 파일만 삭제해야 하므로 손상된 드라이버 외에 어떻게 파일 시스템을 손상시킬 수 있는지 알 수 없습니다.
Windows에서 NTFS 파티션을 마운트하고 이로 인해 발생한 손상을 복구할 수 있는지 확인하는 것이 좋습니다.
답변2
작업 디렉토리는 중요하지 않습니다. 이 정규식은 모든 숨겨진 파일 및 디렉터리와 일치합니다.전체 시스템.
+. 하나 이상의 문자
/\. /.
.* 뒤에는 0개 이상의 문자가 옵니다.
여기에서 시도해 보고 몇 가지 경로를 입력하면 무슨 일이 일어나는지 볼 수 있습니다.http://regexpal.com/
시스템이 종료되었으므로 백업해 두시기 바랍니다. 다시 설치해야 합니다.
편집: 버그를 수정했습니다. 샤드의 -x 플래그로 인해 블록 크기가 불안정해지고 NFTS가 이에 대해 쉿소리를 낼 수 있었습니까?