اشکال کار با shadow copy با سی شارپ

ساخت وبلاگ
سلام
alphavss wrapper را گرفتم (که برای کار با shadow copy در دات نت هست) .
با دنبال کردن راهنمای سایت های زیر :

Ronen Ariely Personal Website

AlphaVSS 1.4.0 – AlphaVSS – Bringing Windows Volume Shadow Copy Service to .NET

IVssBackupComponents Interface

Implementation Details for Creating Shadow Copies - Windows applications

و البته اینو هنوز ندیدم :

Volume Shadow Copy Service

کد زیر را نوشتم :


 IVssImplementation vssImplementation = VssUtils.LoadImplementation(); // اولین کار ، شناسایی سیستم عامل و 32 بیتی یا 64 بیتی بودن اون برای شادو کپی هست که این تابع این کار را انجام میده
using (IVssBackupComponents vssBackup = vssImplementation.CreateVssBackupComponents()) // دومین کار مهم ، ساختن شی ای از فرزندان اینترفیس IVssBackupComponents هست تا با شادو کپی بتونیم کار کنیم که این تابع این کار را انجام میده .)
{
vssBackup.InitializeForBackup(null);


vssBackup.GatherWriterMetadata();
vssBackup.SetContext(VssSnapshotContext.Backup);
vssBackup.SetBackupState(false, false, VssBackupType.Full, false); // پیکربندی کلی برای بکاپ
Guid MyGuid_1 = vssBackup.StartSnapshotSet();
Guid MyGuid_2 = vssBackup.AddToSnapshotSet("F:\"); // برای اضافه کردن درایو برای شادو کپی (عملیات شادو کپی را انجام نمیده)
vssBackup.PrepareForBackup(); // رویداد PrepareForBackup را برای نویسنده ی بکاپ ایجاد میکنه
vssBackup.DoSnapshotSet(); // انجام عملیات شادو کپی ها در این set و مجموعه ، بصورت همزمان

}


دات نت فریم وورک 4.0 را انتخاب کردم.
ویژال استودیو هم بصورت run as admin اجرا کردم (وگرنه چون برای بکاپ شادو کپی ، دسترسی admin نداشته باشه ، ارور میده) . مثل زمانی که پادویش میخواد بکاپ بگیره ، موقع نوشتن فایل بکاپ ، یه کوچیک هارد درگیر میشه (و طبعا صدای هارد میاد) ، این کد هم اجرا میشه ، صدای هارد یه کوچیک میاد ولی دیگه وقتی میرم توی properties>previous version از اون درایو را میبینم ، بکاپ جدیدی اضافه نمیشه . ولی کدش هم اروری نمیده . مشکل از کجاست؟ چجوری باید کاری کنم که فایل بکاپ (شادو کپی) گرفته شده ، توی سربرگ previous version نمایش بده؟


بعد اینکه پادویش یه قابلیتی داره که میشه حداقل فضای رزرو شده برای هر درایو را روی مقداری (مثلا 5 درصد از حجم کل اون درایو برای بکاپ) اختصاص داد . این رو چجوری میشه ست کرد؟
بعد هم کد بالا را فقط در صورتی که قصد دارم از درایو F ام بکاپ بگیرم ، تا چقدر میشه خلاصه کرد؟ یعنی همه ی توابعی که در کد بالا فراخونی شد ، لازم اند یا میشه بعضی ها را نادیده گرفت؟ اگه میشه ، کدوم ها را میشه نادیده گرفت؟

سر آخر ، این خط کد را هم به آخر کد بالا اضافه میکنم :


 string path = vssBackup.ExposeSnapshot(MyGuid_2, null, VssVolumeSnapshotAttributes.ExposedLocally, "L:");
MessageBox.Show(path);


ارور زیر را میده :


System.ArgumentException: 'Value does not fall within the expected range.'


ممنون
تمپوs...
ما را در سایت تمپوs دنبال می کنید

برچسب : نویسنده : خنج tempos بازدید : 217 تاريخ : دوشنبه 26 آذر 1397 ساعت: 13:09