File ZIP bị hỏng? Cách phục hồi (Đôi khi)
Tại sao file ZIP lại bị hỏng ngay từ đầu?
Một file ZIP không phải là một khối dữ liệu đơn lẻ, nguyên khối. Nó là một container với cấu trúc cụ thể: một local file header cho mỗi mục nhập, dữ liệu nén và quan trọng nhất, một central directory ở cuối cùng. Hầu hết các công cụ giải nén đều đọc central directory đó trước để có được bản đồ nội dung của archive. Nếu mất kết nối mạng ở 99%, mất điện đột ngột khi đang ghi, hoặc đồng bộ hóa đám mây bị gián đoạn làm hỏng những byte cuối cùng đó, toàn bộ archive có thể bị lỗi. Điều này xảy ra ngay cả khi 95% dữ liệu file thực tế vẫn còn nguyên vẹn. Các nguyên nhân phổ biến nhất là những thứ bạn thấy hàng ngày. Download không hoàn chỉnh là một nguyên nhân lớn, khi trình duyệt của bạn báo file đã xong trước khi server thực sự kết thúc. Server email âm thầm cắt bớt các attachment trên 25 MB là một trường hợp kinh điển khác. Rút USB mà không 'Safely Remove' cũng có thể gây ra điều này, cũng như các lỗi hệ thống file đơn giản trên một ổ đĩa cũ. Thậm chí còn có hiện tượng 'bit rot' trên các ổ đĩa cơ cũ, nơi các bit từ tính thực sự bị đảo ngược sau vài năm, làm hỏng một file ZIP chỉ nằm đó mà không bị động chạm. Có một điểm cần lưu ý đặc biệt với trình xử lý ZIP tích hợp của Windows ('Send to > Compressed folder'). Nếu bạn tạo một archive trên một network share, file kết quả có thể làm một số công cụ của bên thứ ba bối rối. Archive không thực sự bị hỏng; metadata đường dẫn UNC chỉ làm trình giải nén gặp trục trặc. Trước khi bạn kết luận một file đã 'chết', hãy luôn thử một công cụ thứ hai. Cái mà 7-Zip từ chối, WinRAR có thể mở bình thường, và ngược lại.
Bước Một: Chẩn đoán trước khi làm bất cứ điều gì gây hại
Dừng lại. Trước khi bạn làm bất cứ điều gì, đặc biệt là trước khi chạy một công cụ sửa chữa mạnh tay có thể ghi đè lên file, hãy tạo một bản sao. Luôn luôn. Đây là quy tắc quan trọng nhất. Đổi tên file gốc của bạn thành một cái gì đó như 'archive_ORIGINAL_DO_NOT_TOUCH.zip' và di chuyển nó đến một nơi an toàn. Bây giờ bạn có thể làm việc trên bản sao mà không sợ hãi. Tiếp theo, chẩn đoán vấn đề bằng cách kiểm tra kích thước file. Nếu bạn đã download file ZIP, trang download của server hoặc lịch sử trình duyệt của bạn có thể hiển thị kích thước dự kiến. Trên Windows, nhấp chuột phải vào file, chọn Properties, và xem 'Size' (không phải 'Size on disk'). Trên macOS, Cmd+I sẽ hiển thị cho bạn. Nếu file của bạn là 47,832,104 bytes và server xác nhận nó phải là 47,832,104 bytes, thiệt hại có lẽ là về cấu trúc, chứ không phải là trường hợp đơn giản file bị cắt cụt quá sớm. Sau đó, chạy một kiểm tra tính toàn vẹn nhanh. Trong 7-Zip, bạn có thể nhấp chuột phải vào file và chọn 'Test Archive'. Nó sẽ cung cấp cho bạn một báo cáo chi tiết với các lỗi CRC trên các file cụ thể, điều này hữu ích hơn nhiều so với một thông báo đơn giản 'bị hỏng'. Điều này cho bạn biết liệu một file có phải là vấn đề, hay nếu sự hỏng hóc đã lan rộng. Trong terminal trên macOS hoặc Linux, `unzip -t yourfile.zip` đạt được điều tương tự với báo cáo từng dòng. Trên Windows, nếu bạn có một công cụ như Git Bash hoặc WSL, `zip -T yourfile.zip` sẽ hoạt động. Ghi chú lại. Viết xuống những file cụ thể nào không vượt qua kiểm tra CRC. Nếu chỉ có một hoặc hai file trong số năm mươi, cơ hội phục hồi của bạn là rất lớn. Nếu mọi file đều thất bại, hãy chuẩn bị cho một cuộc chiến khó khăn hơn nhiều.
Các phương pháp phục hồi miễn phí đáng thử trước tiên
Trước khi bạn mở ví hoặc upload các file nhạy cảm lên một dịch vụ trực tuyến ngẫu nhiên, hãy tận dụng hết các tùy chọn miễn phí. Chúng hoạt động hiệu quả thường xuyên hơn bạn nghĩ nhiều. **Chế độ phục hồi tích hợp của 7-Zip.** Đừng chỉ nhấp đúp vào archive bị hỏng. Mở 7-Zip File Manager, điều hướng đến file của bạn và thử mở nó từ đó. Nếu nó mở một phần, bạn thường có thể kéo các file còn nguyên vẹn ra ngoài. Để có một cách tiếp cận mạnh mẽ hơn, hãy sử dụng dòng lệnh: '7z e yourfile.zip -o./output_folder' — chữ 'e' viết thường sẽ giải nén các file mà không có cấu trúc thư mục của chúng và dễ bỏ qua lỗi hơn so với lệnh 'x'. Thêm '-y' để tự động xác nhận mọi lời nhắc. 7-Zip sẽ đơn giản kéo ra những gì nó có thể đọc và bỏ qua các phần bị hỏng. **Chức năng sửa chữa của WinRAR.** Đây là điểm dừng đầu tiên của tôi cho hầu hết các file ZIP bị hỏng. Mặc dù nó nổi tiếng với các file RAR, WinRAR vẫn xử lý các file ZIP rất tốt. Mở WinRAR, chọn archive bị hỏng, và vào Tools > Repair Archive. Đảm bảo bạn chọn 'Treat the corrupt archive as ZIP'. WinRAR sau đó tạo một file hoàn toàn mới, thường được đặt tên là 'fixed.zip' hoặc '_rebuilt.zip', mà không chạm vào file gốc của bạn. Phương pháp này đặc biệt hiệu quả khi central directory là vấn đề chính nhưng các local file header vẫn ổn. **DiskInternals ZIP Repair** (có phiên bản miễn phí). Công cụ miễn phí này có một cách tiếp cận khác. Nó thực hiện quét thô archive, tìm kiếm các magic bytes 'PK\x03\x04' báo hiệu sự bắt đầu của một local file header. Điều này cho phép nó thử và xây dựng lại central directory từ đầu. Nó có thể chậm, đặc biệt với các archive lớn, nhưng nó là cứu cánh cho các download bị cắt cụt. **Các lệnh 'zip -F' và 'zip -FF'** trên Linux/macOS. Nếu bạn đang dùng Linux hoặc macOS, bạn có các công cụ mạnh mẽ được tích hợp sẵn. Bắt đầu với 'zip -F broken.zip --out fixed.zip' để thử sửa chữa nhanh. Nếu cách đó không hiệu quả, hãy dùng đến vũ khí hạng nặng: 'zip -FF broken.zip --out fixed.zip'. Lệnh double-F thực hiện quét mạnh mẽ hơn nhiều. Nó chậm hơn, nhưng có thể phục hồi các file ngay cả khi central directory bị thiếu hoàn toàn. Các phương pháp miễn phí này sẽ phục hồi các file có thể sử dụng được trong khoảng 60-70% các trường hợp mà sự hỏng hóc chỉ cục bộ chứ không lan rộng ra toàn bộ archive.
CocoConvert có thể (và không thể) làm gì ở đây
Chúng tôi muốn nói rõ về những gì CocoConvert làm. Chúng tôi là một dịch vụ chuyển đổi file, được thiết kế để chuyển đổi các file từ định dạng này sang định dạng khác, chứ không phải là một công cụ để sửa chữa các archive bị hỏng. Điều quan trọng là phải hiểu rõ sự khác biệt này. Vậy thì, CocoConvert phù hợp ở đâu trong quá trình này? Giá trị thực sự của chúng tôi đến *sau khi* bạn đã sử dụng các công cụ trên để thực hiện phục hồi một phần. Giả sử bạn đã trích xuất được hầu hết các file từ file ZIP bị hỏng của mình, nhưng một trong số đó là một file DOCX mà bây giờ mở ra với văn bản bị xáo trộn, hoặc một file PNG mà bạn cần chuyển đổi thành PDF cho một báo cáo. Đó chính là lĩnh vực của chúng tôi. Hãy upload file đã được phục hồi nhưng vẫn có vấn đề đó lên, chọn định dạng mục tiêu của bạn, và để chúng tôi xử lý việc chuyển đổi sạch sẽ. Có một kịch bản phổ biến khác mà chúng tôi có thể giúp. Hãy tưởng tượng bạn phục hồi một thư mục các file .pages cũ từ bản sao lưu, nhưng bây giờ bạn đang dùng máy Windows và không có cách nào để mở chúng. Thay vì cố gắng tìm một chiếc Mac cũ, bạn có thể đơn giản chuyển đổi chúng sang DOCX thông qua CocoConvert và tiếp tục công việc. Điều mà chúng tôi hoàn toàn không thể làm là sửa chữa chính file ZIP bị hỏng. Chúng tôi không có một viên đạn thần kỳ nào để tái cấu trúc cấu trúc của ZIP, phục hồi dữ liệu từ các khối bị hỏng, hoặc trích xuất các file mà các công cụ như 7-Zip và WinRAR không thể lấy được. Upload một file ZIP bị hỏng lên dịch vụ của chúng tôi sẽ không mang lại kết quả khác; chúng tôi cần các file có thể đọc được để bắt đầu quá trình của mình. Nếu bạn đang đối phó với một sự cố thực sự thảm khốc, đặc biệt là một sự cố liên quan đến ổ đĩa bị hỏng vật lý, bạn cần tìm đến các dịch vụ phục hồi dữ liệu chuyên nghiệp như Ontrack hoặc DriveSavers. Họ sử dụng các công cụ cấp độ phần cứng trong môi trường phòng sạch. Hãy chuẩn bị tinh thần, vì các dịch vụ này không hề rẻ, thường bắt đầu từ khoảng 300-500 USD và tăng nhanh từ đó. Tuy nhiên, đối với hầu hết các trường hợp hỏng file ZIP hàng ngày, các công cụ miễn phí sẽ là quá đủ.
Phục hồi từ các kịch bản hỏng hóc cụ thể
Không phải tất cả các sự cố hỏng hóc đều giống nhau. Chiến lược phục hồi đúng đắn phụ thuộc hoàn toàn vào những gì đã xảy ra với file của bạn. **Download bị cắt cụt (file bị dừng giữa chừng khi chuyển).** Đây thường là kịch bản dễ phục hồi nhất. Các file header và dữ liệu nén cho nhóm file đầu tiên thường hoàn hảo; chỉ có central directory ở cuối là bị thiếu hoặc không đầy đủ. Chức năng sửa chữa của WinRAR hoặc lệnh 'zip -FF' là lựa chọn tốt nhất của bạn ở đây. Bạn có thể sẽ phục hồi được mọi file cho đến thời điểm quá trình chuyển giao thất bại. **CRC không khớp trên các file cụ thể.** Ở đây, cấu trúc tổng thể của archive vẫn ổn, nhưng dữ liệu cho một hoặc nhiều file bên trong bị hỏng. Đừng bỏ cuộc. Trong 7-Zip, bạn có thể buộc nó trích xuất các file bị lỗi này. Vào Tools > Options > Settings và đánh dấu vào ô 'Keep broken files'. File được trích xuất có thể không đầy đủ hoặc bị xáo trộn, nhưng đối với một tài liệu văn bản, bạn có thể lấy lại 99% nội dung của mình. Đối với một file PDF 500 trang mà chỉ có các trang 340-360 không đọc được, đó là một chiến thắng lớn. **File ZIP được bảo vệ bằng mật khẩu bị hỏng.** Đây là kịch bản ác mộng. Bạn thậm chí không thể bắt đầu trích xuất hoặc sửa chữa nếu không có mật khẩu, và bản thân mã hóa làm cho quá trình này khó khăn hơn nhiều. Nếu archive sử dụng mã hóa AES-256 hiện đại, các lựa chọn của bạn cực kỳ hạn chế vì mã hóa được gắn chặt với tính toàn vẹn dữ liệu. Các archive ZipCrypto cũ hơn, yếu hơn mang lại cơ hội tốt hơn một chút, vì một số công cụ có thể xử lý các lỗi nhỏ trong sơ đồ mã hóa kém mạnh mẽ hơn. **ZIP nhiều phần (.zip, .z01, .z02...).** Nếu bạn đang sử dụng một archive chia nhỏ, bạn hoàn toàn cần tất cả các phần. Nếu bất kỳ phân đoạn nào bị thiếu hoặc hỏng, toàn bộ bộ thường sẽ không mở được. Việc phục hồi rất khó xảy ra nếu bạn thiếu một file từ giữa chuỗi. Tuy nhiên, nếu chỉ có phân đoạn cuối cùng bị hỏng, chức năng sửa chữa của WinRAR đôi khi có thể làm điều kỳ diệu và tái tạo đủ thông tin để trích xuất hầu hết các file. **Các vấn đề về định dạng ZIP64.** Phần mở rộng ZIP64 được sử dụng cho các archive trên 4 GB. Vấn đề là nhiều công cụ cũ không hiểu nó và sẽ báo cáo nhầm một file hoàn toàn tốt là bị hỏng. Đừng lãng phí thời gian với phần mềm lỗi thời ở đây. Điểm dừng đầu tiên và duy nhất của bạn nên là một phiên bản 7-Zip hiện đại — nó có hỗ trợ ZIP64 tốt nhất trong số các công cụ miễn phí có sẵn.
Phòng ngừa: Lời khuyên nhàm chán nhưng thực sự quan trọng
Sau khi bạn đã dành cả buổi tối để chiến đấu phục hồi một file duy nhất, chủ đề nhàm chán về phòng ngừa đột nhiên trở nên thú vị hơn nhiều. Thói quen tốt nhất mà bạn có thể áp dụng là xác minh checksum cho các download quan trọng. Các nhà phân phối phần mềm uy tín luôn công bố các hash MD5, SHA-1 hoặc SHA-256 bên cạnh các liên kết download của họ. Rất dễ để kiểm tra. Trong Windows PowerShell, chạy: 'Get-FileHash yourfile.zip -Algorithm SHA256'. Trên macOS hoặc Linux, đó là 'shasum -a 256 yourfile.zip'. Nếu chuỗi ký tự dài mà máy tính của bạn xuất ra khớp với chuỗi trên trang web, file của bạn là một bản sao hoàn hảo, từng byte một. Không có lỗi. Đối với các archive bạn tự tạo để lưu trữ lâu dài, hãy ngừng sử dụng ZIP. Hãy dùng một định dạng có khả năng phục hồi lỗi tốt hơn. Định dạng .7z (từ 7-Zip) và định dạng RAR đều hỗ trợ các bản ghi phục hồi. Khi bạn tạo một file RAR, bạn có thể chỉ định một bản ghi phục hồi 3-5%. Điều này thêm một lượng nhỏ dữ liệu dự phòng cho phép archive tự sửa chữa ngay cả khi một tỷ lệ phần trăm file đó bị hỏng sau này. ZIP không có tính năng gốc nào có thể sánh được. Đừng tin tưởng đám mây một cách mù quáng. Các dịch vụ đám mây là để đồng bộ hóa, không phải để sao lưu, và chúng sẽ vui vẻ đồng bộ một file bị hỏng nhanh như một file tốt. Nếu file cục bộ của bạn bị hỏng và đồng bộ trước khi bạn nhận ra, bản sao trên đám mây của bạn giờ cũng bị hỏng. Đối với bất cứ thứ gì không thể thay thế, bạn cần ít nhất một bản sao lưu ngoại tuyến trên một ổ đĩa ngoài hoặc thậm chí là một chiếc USB giá rẻ. Khi gửi các archive lớn, hãy chia nhỏ chúng. Sử dụng tính năng 'Split to volumes' của 7-Zip để chia một file lớn thành các phân đoạn dưới 50 MB mỗi phần. Các phần nhỏ hơn ít có khả năng bị server email làm hỏng, và nếu một phần bị hỏng, bạn chỉ cần download lại phần đó, chứ không phải toàn bộ file nhiều gigabyte. Cuối cùng, hãy kiểm tra các archive của bạn. Ngay sau khi bạn tạo một cái, nhấp chuột phải vào nó trong 7-Zip và chọn 'Test Archive'. Việc này chỉ mất vài giây và mang lại cho bạn sự yên tâm rằng mọi thứ đã được nén đúng cách trước khi bạn xóa các file nguồn gốc. Bất cứ ai đã bỏ qua bước này và phải trả giá đều biết nó quan trọng đến mức nào.
Khi nào nên chấp nhận mất mát và tiếp tục
Có một thời điểm trong mọi nỗ lực phục hồi dữ liệu mà việc cố gắng thêm là không hợp lý. Biết khi nào nên từ bỏ có thể giúp bạn tiết kiệm hàng giờ bực bội. Nếu bạn đã thử trích xuất khoan dung với 7-Zip, chạy chức năng sửa chữa của WinRAR, sử dụng lệnh 'zip -FF', và thử một công cụ chuyên dụng như DiskInternals ZIP Repair—mà bạn vẫn không có các file mình cần—dữ liệu có lẽ đã mất vĩnh viễn nếu không có sự giúp đỡ chuyên nghiệp. Đó là lúc bạn phải tự hỏi: liệu dữ liệu này có đáng để bỏ ra 300 đến 1.000+ USD chi phí phục hồi chuyên nghiệp không? Đối với hầu hết mọi người, câu trả lời thành thật là không. Hãy buông bỏ. Nếu file ZIP chứa bản sao lưu dự án từ hai năm trước, ảnh bạn có ở nơi khác, hoặc phần mềm bạn có thể download lại, thì nó không đáng giá. Nhưng nếu nó chứa bản sao duy nhất của hồ sơ tài chính hoặc video gia đình không thể thay thế của bạn, thì một dịch vụ chuyên nghiệp đáng để tham khảo. Hầu hết sẽ đánh giá tình hình của bạn miễn phí trước khi báo giá. Bài học thực sự ở đây là về chiến lược sao lưu của bạn. Một file ZIP là một container tiện lợi để nén và vận chuyển file. Nó không phải là một định dạng sao lưu. Nó không có tính dự phòng, không có phiên bản hóa, và không có khả năng sửa lỗi tích hợp. Sử dụng ZIP làm hệ thống lưu trữ chính của bạn là một thói quen có vẻ hoàn hảo cho đến thời điểm nó trở thành một thảm họa. Nếu bạn đã có thể phục hồi các file của mình, dù chỉ một phần, hãy lấy sự cố này làm động lực. Dành ba mươi phút tiếp theo và thiết lập một hệ thống sao lưu thực sự. Dù đó là Time Machine trên macOS, Windows Backup, hay một dịch vụ đám mây như Backblaze với giá 9 USD/tháng, một bản sao lưu có phiên bản hóa, đúng cách sẽ xử lý lỗi một cách duyên dáng hơn nhiều. Bạn của tương lai sẽ cảm ơn bạn vì điều đó. Và một khi các file của bạn an toàn, nếu bất kỳ file nào trong số đó cần được chuyển đổi sang định dạng hiện đại hoặc dễ truy cập hơn, CocoConvert sẵn sàng giúp đỡ với bước cuối cùng đó.