Bekerja dengan Target Terarah
Mekanisme target yang diarahkan memungkinkan penulis untuk memetakan ulang file pada waktu pemulihan. Ini memungkinkan penulis untuk melakukan hal berikut:
- Tentukan lokasi target baru (dianalogikan dengan IVssBackupComponents pemohon::AddNewTarget).
- Klaim kembali ruang disk dengan memulihkan hanya bagian file yang diperlukan ke disk, terutama ketika file dicadangkan menggunakan mekanisme file parsial .
- Ubah format file untuk memenuhi kebutuhan saat ini.
File apa pun yang akan digunakan dengan operasi target yang diarahkan harus memiliki target pemulihan VSS_RT_DIRECTED.
Setelah ditetapkan bahwa pemohon dapat mendukung operasi target yang diarahkan, penulis (saat menangani peristiwa PreRestore ) menggunakan IVssComponent::AddDirectedTarget untuk instans IVssComponent yang sesuai dengan komponen yang mengelola file (atau komponen yang menentukan set komponen yang berisi file) untuk menentukan bagaimana file akan dipetakan ulang saat pemulihan.
Dalam menggunakan IVssComponent::AddDirectedTarget, penulis menentukan nama file dan jalur yang digunakan untuk mencadangkan file, nama file dan jalur tujuan pemulihannya (nilai-nilai ini dapat sama dengan nama dan jalur file asli), dan rentang file sumber dan tujuan.
Seperti halnya operasi file parsial, daftar rentang adalah pasangan offset ke dalam file yang akan dicadangkan (dalam byte) dan panjang bagian yang akan dipulihkan (dalam byte), offset dan panjang yang dipisahkan oleh titik dua, dan setiap pasangan dipisahkan oleh koma: Offset1**:Length1,** Offset2**:**Length2. Setiap nilai adalah bilangan bulat 64-bit dalam format heksadesimal atau desimal.
Jika penulis perlu menggunakan mekanisme target yang diarahkan agar pemohon memulihkan file ke lokasi baru, penulis akan memanggil IVssComponent::AddDirectedTarget dengan nama dan jalur file asli serta nama dan jalur file baru, dan menentukan rentang tujuan sumber dengan offset nol dan panjang yang sama dengan seluruh ukuran file.
Misalnya, jika penulis perlu memiliki file 200K, C:\WriterData\Index.dat, dipulihkan sebagai C:\WriterData\OldIndex.dat, string rentang sumber dan tujuan adalah "0:204880."
Untuk memetakan ulang file besar yang dicadangkan sebagian, pemohon akan menggunakan rentang sumber yang digunakan untuk mencadangkan file dan rentang tujuan yang akan mengurangi ukuran file. Informasi rentang sumber dapat diperoleh dengan menggunakan IVssComponent::GetPartialFile untuk instans IVssComponent yang sesuai dengan komponen yang mengelola file (atau komponen yang menentukan set komponen yang berisi file).
Jika file yang dicadangkan sebagian awalnya adalah file besar yang header-nya, 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 sumber sebagai string "64:448,0x1239E8577A:65536."
Jika penulis ingin memetakan ulang file yang dipulihkan hanya berisi header dan data terbaru, daftar rentang bisa menjadi string "0:488,488:65536."
Sebelum benar-benar melakukan operasi pemulihan, pemohon harus memeriksa untuk melihat apakah ada file yang memerlukan dukungan target yang diarahkan.
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 metode IVssWriterComponentsExt::GetComponent dan IVssWriterComponentsExt::GetComponentCount yang memungkinkan pemohon untuk mendapatkan instans IVssComponent .
Ini memungkinkan pemohon untuk mendapatkan kandidat target yang diarahkan dengan menggunakan IVssComponent::GetDirectedTargetCount dan IVssComponent::GetDirectedTarget untuk instans IVssComponent yang sesuai dengan komponen yang mengelola file (atau komponen yang menentukan set komponen yang berisi file).