Bekerja dengan File Parsial

Terkadang berguna untuk mencadangkan dan memulihkan hanya bagian file. VSS menyediakan mekanisme file parsial , yang, jika pemohon mendukungnya, memungkinkan penulis untuk menentukan pencadangan dan pemulihan file parsial.

Operasi file parsial sering digunakan paling besar untuk penulis yang mempertahankan file yang sangat besar, hanya sebagian kecil yang berubah di antara operasi pencadangan. Ini menjadi kasus, sering berguna untuk menyalin hanya bagian yang berubah ke media cadangan. Untuk alasan ini, operasi file parsial biasanya, tetapi tidak secara eksklusif, digunakan untuk mendukung operasi pencadangan dan pemulihan inkremental.

Jika penulis ingin menerapkan operasi file parsial, penulis menggunakan CVssWriter::IsPartialFileSupportEnabled untuk menentukan apakah pemohon yang bekerja dengannya mendukung operasi.

Jika pemohon mendukung operasi file parsial, dan jika menambahkan komponen yang mengelola file (atau komponen yang menentukan set komponen yang berisi file) ke Dokumen Komponen Cadangan, penulis menunjukkan bagian file mana yang akan disimpan (biasanya saat menangani peristiwa PrepareForBackup atau PostSnapshot ) dengan memanggil IVssComponent::AddPartialFile.

Selain jalur dan nama file, penulis memasok rentang, informasi metadata opsional ke IVssComponent::AddPartialFile.

Informasi rentang disediakan sebagai string yang berisi salah satu dari berikut ini:

  • Pasangan offset ke dalam file yang akan dicadangkan (dalam byte) dan panjang bagian yang akan dicadangkan (dalam byte), offset dan panjang dipisahkan oleh titik dua, dan setiap pasangan dipisahkan oleh koma, misalnya, Offset1**:Length1,** Offset2**:**Length2.

    Setiap nilai adalah bilangan bulat 64-bit (dalam format heksadesimal atau desimal) yang masing-masing menentukan offset byte dan panjang dalam byte.

  • Jalur lengkap, termasuk nama file, pada sistem file rentang biner saat ini yang berisi yang berikut ini:

    • Angka (dinyatakan sebagai bilangan bulat 64-bit) dari rentang file berbeda yang terkandung dalam file
    • Setiap rentang yang dinyatakan sebagai sepasang bilangan bulat 64-bit: anggota pertama pasangan menjadi offset ke dalam file yang dicadangkan (dalam byte), dan anggota kedua adalah panjang data yang akan dicadangkan (dalam byte)

Jika penulis menggunakan file rentang untuk menentukan operasi file parsial, pemohon harus menjamin bahwa file ini dicadangkan (bahkan jika file belum tentu bagian dari kumpulan cadangan default) atau bahwa informasi rentang dipertahankan pada media cadangan dengan cara lain. Jika informasi file rentang tidak dicadangkan, memulihkan file yang dicadangkan sebagian tidak akan mungkin.

Penulis juga dapat menambahkan string yang berisi metadata. Metadata ini dapat dalam format khusus penulis karena dimaksudkan untuk memungkinkan penulis memvalidasi pemulihan di masa mendatang.

Dengan informasi ini, pemohon pendukung dapat melakukan pencadangan file parsial.

Sebagai contoh, pertimbangkan file besar yang headernya (byte 64-512) berisi jumlah rekaman dan informasi lain yang sering diperbarui, dan yang data terbarunya akan ditemukan dalam 65536 byte terakhir file—byte 0x1239E8577A ke 0x1239E7577A.

Penulis dapat menentukan daftar rentang sebagai string "64:448,0x1239E8577A:65536."

Saat pemulihan, dan sebelum benar-benar melakukan operasi pemulihan, pemohon harus memeriksa untuk melihat apakah ada file yang memerlukan dukungan file parsial.

Untuk melakukan ini, pemohon terlebih dahulu melakukan iterasi atas penulis dengan komponen yang disimpan dalam Dokumen Komponen Cadangan menggunakan IVssBackupComponents::GetWriterComponentsCount dan IVssBackupComponents::GetWriterComponents.

Antarmuka IVssBackupComponents::GetWriterComponents kemudian digunakan untuk mengembalikan instans antarmuka IVssWriterComponentsExt , yang menyediakan IVssWriterComponentsExt::GetComponent dan IVssWriterComponentsExt::GetComponentCount, yang memungkinkan pemohon untuk mendapatkan instans IVssComponent .

Ini memungkinkan pemohon untuk mendapatkan informasi tentang file yang dicadangkan sebagian untuk berpartisipasi dalam pemulihan dengan menggunakan IVssComponent::GetPartialFileCount dan IVssComponent::GetPartialFile untuk instans IVssComponent yang sesuai dengan komponen yang mengelola file (atau komponen yang menentukan set komponen yang berisi file).

Jika operasi file parsial dikontrol oleh file rentang, file tersebut harus dipulihkan sebelum menyalin data kembali ke disk. Mungkin terjadi bahwa pemohon yang diperlukan untuk menyalin file rentang kembali ke lokasi baru pada disk. Dalam hal ini, ini menunjukkan bahwa ia telah melakukannya melalui IVssBackupComponents::SetRangesFilePath.

Pemohon kemudian melanjutkan untuk menyalin data ke lokasi yang sesuai di tujuan pemulihan yang sudah ada di disk.

Penulis (saat menangani peristiwa PostRestore ), dengan memeriksa IVssComponent::GetFileRestoreStatus untuk file yang ditunjukkan oleh IVssComponent::GetPartialFile, menentukan apakah operasi file parsial berhasil. Penulis harus selalu mencoba memverifikasi kebenaran pemulihan ini menggunakan informasi offset dan metadata apa pun yang disertakan dalam Dokumen Komponen Cadangan.

Jika pemohon harus memulihkan file rentang ke lokasi baru, VSS akan memperbarui informasi ini sehingga jalur yang dikembalikan oleh IVssComponent::GetPartialFile sudah benar.