هر چند کامل درباره ی این قضیه نمیدونم ولی تا اونجایی که بررسی کردم برای استفاده از alphavss و گرفتن بکاپ ، به این روند رسیدم . توضیح میدم ، ببینین درسته؟ (البته خودم دقیق کدها را متوجه نشدم) :
قلب اصلی برای کار با شادو کپی ، اینترفیس IVssBackupComponents هست . بنابراین برای ساخت شی از این اینترفیس (میدونم بصورت مستقیم نمیشه از اینترفیس شی ساخت) ، از تابع IVssImplementation.CreateVssBackupComponents() استفاده میکنیم . خروجی شی این تابع (یعنی شی IVssBackupComponents) ، قابلیت استفاده از چند عملیات متفاوت مثل بکاپ و هم ریستور با هم را نداره و بهتره که بعد از اتمام استفاده ، dispose بشه . حالا ، شی IVssImplementation توسط خروجی استاتیک تابع VssUtils.LoadImplementation() بدست میاد .
نام متغییر و شی IVssBackupComponents را همونطور که در کد بالا میبینید ، vssBackup گذاشتم .
کد:
vssBackup.InitializeForBackup(null);
طبق توضیحات ، مقداردهی اولیه میکنه اجزای بکاپ را برای آماده سازی شدن (چند جا ، توضیحات توابع شبیه هم بود ، من دقیق تفاوت بین شون را متوجه نشدم مثل همین)
کد:
vssBackup.GatherWriterMetadata();
vssBackup.SetContext(VssSnapshotContext.Backup);
این دو تا کد هم چندان متوجه نشدم .
کد:
vssBackup.SetBackupState(false, false, VssBackupType.Full, false);
پیکربندی کلی بکاپ را انجام میده . مثل اینکه بکاپ افزایشی باشه یا کاهشی و .... .
کد:
Guid MyGuid_1 = vssBackup.StartSnapshotSet();
توی توضیحاتش نوشته یه شادو کپی جدید و خالی درست میکنه که متوجه نشدم . چون ایجاد شادو کپی وظیفه ی تابع DoSnapshotSet انگار هست . بجز این ، عملیات پیکربندی هنوز کامل نشد که این کد اومد .
کد:
Guid MyGuid_2 = vssBackup.AddToSnapshotSet("F:\\");
درایو یا فایلی که میخوایم بکاپ شادو کپی بگیریم را میدیم.
کد:
vssBackup.PrepareForBackup();
طبق توضیحاتش ، رویداد PrepareForBackup را برای نویسنده (فکر کنم منظور از نویسنده ، شی ای که باعث نوشتن فایل بکاپ توسط سیستم عامل میشه را میگه . بازم نمیدونم) ایجاد میکنه که هنوز باهاش کار نکردم.
کد:
vssBackup.DoSnapshotSet()
که عملیات نهایی بکاپ شادو کپی را انجام میده.
این توضیحاتی که گفتم ، درسته؟
خیلی ممنونم