Peran Penulis dalam Pencadangan Inkremental dan Diferensial VSS

Partisipasi penulis dalam pencadangan bertahap dan diferensial biasanya terjadi saat menangani peristiwa Identifi (CVssWriter::OnIdentify), PrepareForBackup (CVssWriter:OnPrepareBackup), dan PostSnapshot (CVssWriter:OnPostSnapshot). Bagaimana penulis berpartisipasi dibentuk oleh apakah mendukung stempel cadangan dan waktu modifikasi terakhir, dan apakah pemohon yang menjalankan cadangan mendukung operasi file parsial.

Menangani Identifikasi Peristiwa selama Pencadangan Inkremental dan Diferensial

Saat menangani peristiwa Identifikasi, penulis menetapkan arsitektur dasar mereka untuk operasi pencadangan inkremental dan diferensial melalui skema cadangan (VSS_BACKUP_SCHEMA) dan masker jenis cadangan spesifikasi file (VSS_FILE_SPEC_BACKUP_TYPE).

Penulis menunjukkan operasi mana yang didukungnya dalam Dokumen Metadata Penulisnya dengan membuat sedikit topeng nilai VSS_BACKUP_SCHEMA dan meneruskannya ke metode IVssCreateWriterMetadata::SetBackupSchema . Dengan ini, penulis dapat menunjukkan apakah ia mendukung hal berikut:

  • Pencadangan inkremental (VSS_BS_INCREMENTAL)
  • Pencadangan diferensial (VSS_BS_DIFFERENTIAL)
  • Pencadangan inkremental dan diferensial tidak dapat dicampur (VSS_BS_EXCLUSIVE_INCREMENTAL_DIFFERENTIAL)
  • Pencadangan bertahap dan diferensial menggunakan stempel cadangan (VSS_BS_TIMESTAMPED)
  • Pencadangan inkremental dan diferensial berdasarkan informasi tentang modifikasi terakhir file (VSS_BS_LAST_MODIFY)

Penulis menggunakan masker jenis cadangan spesifikasi file untuk memberikan informasi tingkat set file kepada pemohon tentang cara menyertakan file dalam cadangan bertahap atau diferensial.

Penulis dapat mengatur masker jenis cadangan spesifikasi file set file saat menambahkan set file ke komponen dengan membuat sedikit masker nilai VSS_FILE_SPEC_BACKUP_TYPE dan meneruskannya ke IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles, atau IVssCreateWriterMetadata::AddFilesToFileGroup.

Ada tiga nilai "diperlukan cadangan" dari enumerasi VSS_FILE_SPEC_BACKUP_TYPE yang memengaruhi pencadangan diferensial dan inkremental:

  • VSS_FSBT_ALL_BACKUP_REQUIRED
  • VSS_FSBT_INCREMENTAL_BACKUP_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_BACKUP_REQUIRED

Ada tiga nilai "salinan bayangan diperlukan":

  • VSS_FSBT_ALL_SNAPSHOT_REQUIRED
  • VSS_FSBT_INCREMENTAL_SNAPSHOT_REQUIRED
  • VSS_FSBT_DIFFERENTIAL_SNAPSHOT_REQUIRED

Kumpulan file yang ditandai dengan jenis cadangan spesifikasi file "salinan bayangan diperlukan" menunjukkan apakah pemohon perlu menyalin data dari salinan bayangan saat melakukan operasi pencadangan INKREMENTAL, DIFERENSIAL, atau SEMUA (yang mencakup operasi pencadangan inkremental dan diferensial).

Bendera "cadangan diperlukan", diterapkan ke operasi pencadangan INCREMENTAL, DIFERENSIAL, atau SEMUA, menunjukkan bahwa penulis mengharapkan salinan versi file saat ini yang diatur tersedia setelah pemulihan operasi pencadangan apa pun. Biasanya, ini berarti bahwa jika kumpulan file ditandai dengan "cadangan diperlukan," semua anggotanya akan disalin ke media cadangan selama pencadangan bertahap atau diferensial, terlepas dari kapan pencadangan atau modifikasi mereka terakhir kali terjadi.

Secara default, set file ditambahkan ke komponen dengan jenis cadangan spesifikasi file VSS_FSBT_ALL_BACKUP_REQUIRED | VSS_FSBT_ALL_SNAPSHOT_REQUIRED. Oleh karena itu, kecuali pengembang penulis memutuskan untuk tidak menggunakan default (dengan memilih jenis cadangan spesifikasi file lain, menggunakan operasi file parsial, atau menggunakan file yang berbeda), file di sebagian besar set file biasanya akan disalin secara keseluruhan ke media cadangan.

Pada titik ini, Dokumen Metadata Penulis penulis sepenuhnya diisi dengan sebagian besar informasi yang diperlukan pemohon untuk memulai pencadangan diferensial atau inkremental. Spesifikasi penambahan set file atau informasi tingkat file untuk mendukung pencadangan akan ditangani selama peristiwa PrepareForBackup .

Menangani Peristiwa PrepareForBackup selama Pencadangan Bertahap dan Diferensial

Sebelum pemohon melanjutkan operasi pencadangan aktual, penulis dapat memodifikasi spesifikasi cadangan bertambah bertahap atau diferensial dengan mengubah Dokumen Komponen Cadangan pemohon melalui antarmuka IVssComponent.

Karena penulis menggunakan antarmuka IVssComponent , mereka biasanya melakukan persiapan ini saat menangani peristiwa PrepareForBackup .

Di CVssWriter:OnPrepareBackup, penulis dapat menentukan dengan lebih tepat bagaimana beberapa file akan dievaluasi untuk cadangan, menentukan mekanisme apa yang harus digunakan dalam mencadangkannya, dan mungkin mengatur stempel cadangan.

File Parsial

Jika pemohon mendukungnya, penulis dapat memilih untuk menerapkan pencadangan bertahap atau diferensial dengan menggunakan operasi file parsial. (Penulis dapat menentukan apakah pemohon mendukung operasi file parsial dengan memanggil CVssWriter::IsPartialFileSupportEnabled.)

Penulis menggunakan IVssComponent::AddPartialFile untuk menunjukkan bagian file yang dipilih untuk dicadangkan selama operasi bertambah bertahap atau diferensial. Pemohon harus mematuhi spesifikasi ini, dan harus selalu mencadangkan bagian file yang ditentukan. (Lihat Bekerja dengan File Parsial untuk informasi selengkapnya tentang operasi file parsial.)

Menggunakan IVssComponent::AddPartialFile, penulis dapat menambahkan file ke cadangan yang sebelumnya tidak ditambahkan ke salah satu set komponennya (oleh IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles, atau IVssCreateWriterMetadata::AddFilesToFileGroup) sebagai file parsial. Setiap file baru yang ditambahkan ke cadangan dengan cara ini harus berada pada volume yang sudah disalin bayangan untuk cadangan ini.

Jika file terlibat dengan operasi file parsial, ini menggantikan jenis cadangan spesifikasi file apa pun, yang diabaikan.

File Yang Dibedakan

Penulis yang mendukung skema cadangan terakhir yang dimodifikasi (VSS_BS_SCHEMA) dapat menambahkan file yang berbeda ke cadangan bertambah bertahap atau diferensial.

Dalam menentukan file yang berbeda, penulis menggunakan IVssComponent::AddDifferencedFileByLastModifyTime dan menentukan jalur, nama file, dan bendera rekursif—namun, ini tidak harus cocok dengan kumpulan file yang disertakan dalam komponen apa pun.

Bahkan, penulis dapat menambahkan file yang sebelumnya tidak ditambahkan ke salah satu set komponennya (oleh IVssCreateWriterMetadata::AddDatabaseFiles, IVssCreateWriterMetadata::AddDatabaseLogFiles, atau IVssCreateWriterMetadata::AddFilesToFileGroup) ke cadangan sebagai file yang berbeda. Setiap file baru yang ditambahkan ke cadangan dengan cara ini harus berada pada volume yang sudah disalin bayangan untuk cadangan ini.

Biasanya, penulis juga akan menentukan waktu modifikasi terakhir saat menambahkan file yang berbeda—berdasarkan mekanisme riwayat penulis sendiri. Waktu modifikasi terakhir ini, jika ditentukan, harus selalu digunakan oleh pemohon dalam menentukan apakah file perlu disertakan dalam cadangan bertahap atau diferensial.

Penulis dapat memilih untuk tidak menentukan waktu modifikasi terakhir saat menambahkan file yang berbeda ke set cadangan bertambah bertahap atau diferensial. Jika demikian, pemohon bebas menggunakan mekanismenya sendiri—misalnya, log cadangan sebelumnya atau informasi sistem file—untuk menentukan apakah file yang berbeda harus disertakan dalam cadangan bertahap atau diferensial.

Jenis cadangan spesifikasi file dari file yang berbeda diabaikan.

Stempel Cadangan

Penulis yang mendukung stempel cadangan (VSS_BS_TIMESTAMP) memiliki format privat mereka sendiri untuk menyimpan informasi tentang kapan cadangan terakhir kali terjadi. Informasi ini dihasilkan oleh penulis selama pencadangan.

Stempel cadangan disimpan dalam Dokumen Komponen Cadangan sebagai string dengan metode IVssComponent::SetBackupStamp . Stempel cadangan berlaku untuk semua set file dalam komponen (atau set komponen) yang sesuai dengan instans IVssComponent.

Jika pemohon memiliki akses ke stempel cadangan cadangan sebelumnya, pemohon akan membuatnya tersedia untuk penulis dengan memanggil IVssBackupComponents::SetPreviousBackupStamp.

Penulis kemudian dapat memeriksa stempel waktu ini menggunakan IVssComponent::GetPreviousBackupStamp.

Perhatikan bahwa pemohon hanya menyimpan dan mengembalikan string yang berisi stempel cadangan. Ini tidak tahu apa-apa tentang format string atau cara menggunakannya; hanya penulis yang memiliki informasi tersebut.

Penulis dapat memilih untuk memperbarui stempel cadangan saat ini menggunakan IVssComponent::SetBackupStamp setelah disebut IVssComponent::GetPreviousBackupStamp, sehingga merekam dalam formatnya sendiri tanggal operasi pencadangan bertambah bertahap atau diferensial saat ini.