Memilih produk
๐Ÿ“

Periksa pemulihan ZIP: temukan kerusakan meski jumlah berkas sama

Percobaan delapan berkas buatan membedakan berkas hilang dan perubahan isi dengan ukuran tetap melalui SHA256, tabel CSV, dan skrip yang dapat diulang.

Periksa pemulihan ZIP: temukan kerusakan meski jumlah berkas sama

ZIP tersedia dan ekstraksi selesai. Apakah isinya sama dengan sumber? Bandingkan jalur relatif, ukuran byte dan SHA256 dengan catatan sumber. SHA256 adalah sidik panjang yang dihitung dari isi. Perubahan isi dapat terdeteksi meski nama dan ukurannya tetap.

Tujuannya adalah percobaan pemulihan kecil tanpa menimpa sumber, lalu membedakan kehilangan dan perubahan lewat tabel. Redaksi MillionsCode membuat 8 berkas buatan, benar-benar mengompres dan memulihkannya, lalu sengaja memasukkan dua kesalahan untuk menguji deteksi. Tidak memakai data pelanggan atau cadangan pribadi.

Pengukuran dan metode dengan 8 berkas

Percobaan dijalankan 28 September 2026 pada Windows, PowerShell 7.6.0-rc.1 dan Microsoft.PowerShell.Archive 1.2.5. Ini bukan perbandingan kompatibilitas beberapa versi stabil. Isinya berkas kosong, nama Korea dengan spasi, dua berkas berbeda masing-masing 4 byte, nama sama dalam subfolder berbeda, biner 256 byte dan catatan. Total 8 berkas, 372 byte.

Daftar sumber lebih dahulu mencatat jalur dari folder seperti nested/level2/sample.txt, ukuran dan SHA256. Folder dikompres menjadi ZIP lalu diekstrak ke folder baru. Ukuran dan sidik dibandingkan pada jalur relatif yang sama. Nama saja dapat membingungkan dua sample.txt dari folder berbeda.

KondisiBerkas sumberBerkas pembandingCocokPerbedaan
ZIP dipulihkan normal ke folder baru888Tidak ada
Salinan baru sengaja melewatkan satu berkas877Berkas 15 byte di folder bertingkat hilang
AAAA diubah menjadi ZZZZ pada salinan terpisah887SHA256 berbeda pada berkas 4 byte

Kasus pertama adalah jalur normal. Dua lainnya memeriksa apakah kesalahan sengaja ditandai gagal. Ini bukan bukti alat ZIP merusak atau menghilangkan berkas. Redaksi melewatkan berkas saat menyalin dan mengubah isi salinan terpisah sesudah ekstraksi.

Kasus ketiga tetap memiliki 8 berkas dan ukuran berkas berubah tetap 4 byte. Jumlah atau total ukuran saja dapat meloloskannya, tetapi sidik menemukan satu perubahan. Jumlah dan ukuran merupakan pemeriksaan cepat; kesamaan isi adalah langkah tambahan.

Membaca CSV hasil

restore-summary.csv merangkum tiga kasus. restore-comparison.csv berisi 24 baris berkas. Case adalah nama kasus, RelativePath posisi dalam folder. ExpectedBytes dan ActualBytes ialah ukuran sumber dan pembanding; dua kolom SHA256 berisi sidik.

  • MATCH: ukuran dan sidik pada jalur ini cocok.
  • MISSING: jalur sumber tidak ditemukan. Ukuran aktual kosong berarti berkas tidak ada, bukan 0 byte.
  • HASH_MISMATCH: ukuran sama tetapi sidik berbeda; pulihkan lagi dan periksa.
  • Skrip juga memakai SIZE_MISMATCH untuk ukuran berbeda dan UNEXPECTED untuk berkas tambahan. Dua cabang ini tidak diuji dengan penyisipan kesalahan tersendiri dalam tiga kasus tersebut.

Pada same_size_change, same-a.txt sama-sama 4 byte. Sidik sumber dimulai 63C1DD95โ€ฆ, salinan diubah 96741164โ€ฆ. Pemeriksaan memakai seluruh 64 karakter, bukan awalan saja. Sebaliknya empty.txt memang sejak awal kosong dan sidiknya cocok setelah pemulihan normal. Menganggap semua berkas kosong rusak akan keliru.

Berlatih aman sebelum memeriksa data sendiri

Baca teks skrip, lalu simpan di folder latihan sebagai restore-lab.ps1. Pastikan ekstensi tidak tetap .ps1.txt. Skrip tidak menerima jalur berkas pengguna. Setiap pelaksanaan membuat folder baru di sampingnya dan hanya mengompres, memulihkan serta mengubah berkas buatan sendiri. Tidak ada perintah menghapus sumber atau opsi menimpa paksa pemulihan lama. Letakkan di folder latihan kosong, baca lalu jalankan dengan PowerShell. Jika kebijakan perusahaan memblokir skrip, jangan menonaktifkannya sendiri; pahami hasil melalui langkah manual di bawah.

Jalankan dari folder tempat skrip disimpan:

& '.\restore-lab.ps1'

zip_restore seharusnya PASS, sedangkan dua kesalahan sengaja FAIL. Bila ControlBehavedAsExpected bernilai True pada ketiga baris, kondisi normal dan salah yang diuji berperilaku sesuai harapan. Jangan menyamakan FAIL sengaja dengan kegagalan cadangan nyata. Buka CSV dan results.json di folder baru yang ditampilkan untuk waktu, versi dan sidik penuh.

Untuk cadangan nyata gunakan daftar sumber pada saat ZIP dibuat. Membandingkan dengan berkas saat ini yang sudah berubah dapat menandai cadangan lama yang sebenarnya benar sebagai berbeda. Berlatih dengan salinan berkas penting dan pulihkan ke folder baru tanpa data lama, bukan lokasi sumber.

Jalur berikut hanya contoh latihan. Perintah pertama mengompres sumber latihan, kedua memulihkan ke lokasi baru, dan dua terakhir menampilkan sidik berkas terkait. Lapisan tambahan source muncul karena foldernya sendiri dikompres.

Compress-Archive -LiteralPath '.\source' -DestinationPath '.\trial.zip'
Expand-Archive -LiteralPath '.\trial.zip' -DestinationPath '.\restore-new'
Get-FileHash -LiteralPath '.\source\notes.txt' -Algorithm SHA256
Get-FileHash -LiteralPath '.\restore-new\source\notes.txt' -Algorithm SHA256

Get-FileHash menjelaskan perbandingan isi dan SHA256 sebagai bawaan. Expand-Archive membedakan tujuan dan penimpaan. Contoh ini tidak memakai -Force untuk menimpa.

Hal yang belum diperiksa meski lulus

Q. Apakah PASS berarti seluruh cadangan aman?

PASS di sini hanya berarti posisi, ukuran dan isi 8 berkas buatan cocok. Kecepatan SSD, umur disk, tingkat sukses sinkronisasi awan dan keandalan cadangan besar tidak diukur. Hanya satu lingkungan digunakan; izin, pemilik, kunci enkripsi, pengaturan aplikasi dan basis data terbuka tidak diuji. Buka juga lembar kerja atau foto pada aplikasi sebenarnya, dan pastikan data terkait yang dibutuhkan program kerja ikut pulih.

Q. Apakah berkas tersembunyi dan besar juga tercakup?

Dokumentasi Compress-Archive menjelaskan berkas/folder tersembunyi yang dilewatkan dan batas ukuran. Jangan memperluas contoh kecil ini menjadi cara cadangan seluruh sistem atau konfigurasi tersembunyi. Percobaan tidak memasukkan berkas tersembunyi maupun berkas 2 GB atau lebih.

Q. Jika sidik sama, apakah pemeriksaan selesai?

Daftar pembanding yang salah atau ikut diubah tidak menjamin sumber autentik walau sidik cocok. Periksa daftar yang disimpan terpisah dan waktu pembuatannya. Bila ada kehilangan atau ketidakcocokan, pulihkan jalurnya kembali sebelum menghapus sumber. Daftar, sidik dan pembukaan dokumen yang diperlukan membuat tindakan pemulihan berikut lebih jelas daripada sekadar menemukan ZIP.

Terkait