가장 중요한 복구 프로그램을 사용할 때 파일 이름과 폴더 구조를 보존하는 방법은 무엇입니까?

가장 중요한 복구 프로그램을 사용할 때 파일 이름과 폴더 구조를 보존하는 방법은 무엇입니까?

긴급하게 Linux 복구 소프트웨어를 실행 foremost하고 파일 이름과 폴더 구조를 보존해야 합니다. 아시다시피, 프로그램은 복구된 파일의 이름을 숫자로 바꾼 다음 audit.txt라는 파일 내에 생성된 목록에 나열합니다.

나는 누군가가 나와 똑같은 것을 ruby달성하려고 노력하고 있는 이 훌륭한 커뮤니티의 또 다른 질문에서 이 스크립트를 발견했습니다 . foremost누군가 이 질문에 답변했고 그 답변에는 rubyaudit.txt 파일이 포함된 폴더에서 이를 실행하기 위한 간단한 지침이 포함된 스크립트가 포함되어 있었습니다. 저는 이것을 시도했지만 아무 일도 일어나지 않았습니다. 달리는 동안 foremost과 마친 후에 모두 시도했지만 아무 일도 일어나지 않았습니다. 아래에 표시된 스크립트를 실행하려고 하면 ruby터미널 출력이 전혀 나오지 않습니다.

File.read("audit.txt").scan(/-{4,}\n(File: .*?\n.*?)(?=-{4,})/m).flatten.map{|z| 
   f1=z.scan(/File: (.*?)\n/).flatten[0];
   f2=z.scan(/[0-9]+:\t(.*?) \t/m).flatten;
   extension=File.extname(f1);

   [
    f1,
    f2.find{|q| File.extname(q)==extension}
   ]
}.each{|k,v| 
  extension=File.extname(k);
  dirname=extension.sub(".","")
  File.rename("#{dirname}/#{v}","#{dirname}/#{k}")
}

foremost이 프로그램을 사용 하고 파일 이름과 폴더 구조를 보존하는 방법을 아는 사람이 있습니까 ? 이것이 foremost내 파일을 복구할 수 있는 유일한 복구 프로그램인 것 같고 Linux와 Windblows 간에 약 30개 이상의 다양한 복구 프로그램을 시도했기 때문에 이 작업을 수행할 수 있었다는 것이 매우 중요합니다 .

답변1

글쎄요, 그게 데이터 복구에 관한 것 아닌가요?

파일 시스템은 폴더 구조 및 파일 이름과 같은 메타데이터와 가장 중요한 위치(파일 크기, 디스크의 오프셋, 각 데이터 세그먼트가 조각화되었는지 여부 등)를 이해합니다.

파일 시스템이 종료되고 원시 데이터를 조각하는 데 의존하는 경우( foremostphotorec기타 도구가 수행하는 작업) 파일 이름을 보존할 방법이 없습니다.

기껏해야 조각한 데이터에서 새 파일 이름을 생성할 수 있습니다(JPEG인 경우 EXIF ​​데이터 기반, ZIP/TAR 아카이브인 경우 압축을 풀면 내부에 파일 이름이 있고 코드 파일에는 때때로 프로젝트 이름 및 작성자 유용한 제목 등에 대한 정보).

그러나 자체 메타데이터를 포함하지 않는 파일 형식의 경우 파일 이름이 없습니다. 파일 시스템 자체에서만 이를 알 수 있기 때문입니다.

좋은 파일 조각가는 발견된 각 파일의 오프셋을 알려줄 것이며, 아마도 파일 시스템 메타데이터의 내용을 통해 오프셋이 주어진 파일 이름을 추출할 수 있을 것입니다(이론적으로 파일이 하드 링크되어 있는 경우 또는 그냥 이름을 바꾸고 이전 메타데이터가 남아 있는 경우). 디스크에 있음).

그러나 이를 위해서는 그러한 메타데이터가 여전히 존재해야 하며, 그러한 메타데이터를 올바르게 해석할 수 있으려면 누군가 또는 무언가가 특정 파일 시스템의 내부 구조를 이해해야 합니다. 따라서 기본적으로 원본 폴더와 파일 이름 구조를 보존하려면 무슨 일이 있어도 파일 시스템 자체를 어떻게든 복구해야 합니다.

audit.txt우선, 이 정보가 포함되지 않은 파일에서 이 정보를 추출하는 것은 물론 불가능합니다. 따라서 audit.txt파일 이름으로 사용하려는 내용이 파일에 표시되지 않는 한 Ruby 스크립트는 막다른 골목입니다. 모자에서 토끼를 꺼낼 수 있는 사람이 필요합니다.

관련 정보