─━ IT ━─

CRC 오류가 발생한 ZIP 파일 복구 방법

DKel 2024. 11. 2. 15:45
반응형
ZIP 파일을 열다 보면 간혹 CRC(Cyclic Redundancy Check) 오류가 발생할 수 있습니다. 이러한 오류는 파일 저장이나 전송 중에 데이터가 손상되었을 가능성을 시사합니다. 다행히도, 손상된 ZIP 파일에서 데이터를 복구하는 몇 가지 방법이 있습니다. 아래에 몇 가지 접근 방법과 예제를 통해 CRC 오류를 해결하는 방법을 설명하겠습니다.

 
1. **WinRAR을 사용한 복구**
 
   WinRAR은 데이터 복구 기능을 제공하여 손상된 ZIP 파일을 복원할 수 있습니다. 아래 단계에 따라 복구를 시도해 보세요.
 
   1. WinRAR을 실행하고, 손상된 ZIP 파일을 선택합니다.
   2. 상단 메뉴에서 '도구' > '파일 복구'를 클릭합니다.
   3. 복구 옵션에서 대상 파일의 저장 경로를 선택한 후 '확인'을 클릭합니다.
   4. 복구가 완료되면 새로운 파일이 'rebuilt.FILENAME.zip' 형식으로 생성됩니다.
 
   ```plaintext
   [WinRAR 사용 예시]
   1. U+3000.zip 선택
   2. 도구 > 파일 복구 클릭
   3. 저장 경로 지정 후 확인
   ```
 
2. **Command Line을 통한 복구**
 
   `zip` 명령어를 이용하여 CRC 오류를 무시하고 데이터를 복구할 수 있습니다. 아래는 명령어 사용 예제입니다.
 
   ```bash
   unzip -FF damaged.zip -d output_directory/
   ```
 
   위 명령어는 오류를 무시하고 가능한 한 많은 파일을 복구하여 'output_directory'에 저장합니다.
 
   ```plaintext
   [명령어 예시]
   $ unzip -FF corrupted_file.zip -d fixed_output/
   ```
 
3. **Python 스크립트를 통한 자동 복구**
 
   소규모 프로젝트에서는 `python` 스크립트를 사용하여 ZIP 파일의 손상 여부를 체크하고 복구할 수 있습니다. 이 방식은 파일을 자동으로 분할하여 각 파일을 개별적으로 검사할 수 있습니다.
 
   ```python
   import zipfile
   from zipfile import ZipFile, BadZipFile
 
   def repair_zip(file_path, extract_dir):
       try:
           with ZipFile(file_path, 'r') as zip_ref:
               zip_ref.extractall(extract_dir)
               print("Extraction successful!")
       except BadZipFile:
           print("Bad CRC error: Attempting extraction ignoring CRC errors")
           with ZipFile(file_path, 'r') as zip_ref:
               for file_name in zip_ref.namelist():
                   try:
                       zip_ref.extract(file_name, extract_dir)
                   except zipfile.error as e:
                       print(f"Failed to extract {file_name}: {e}")
 
   repair_zip('damaged.zip', './extracted_files/')
   ```
 
   이 스크립트는 파일의 무결성을 검토하고 오류가 발생했을 경우 가능한 파일을 각각 추출하여 저장소(`extracted_files`)에 저장합니다.
 
CRC 오류가 발생한 ZIP 파일을 복구할 때는 여러 가지 방법을 조합하여 가장 적합한 결과를 얻을 수 있습니다. 상황에 따라 WinRAR, 명령어 또는 스크립트를 사용해 보세요.

반응형