2009-03-18 5 views
6

मैं सर्वर पर बैकअप फ़ाइलों का प्रयास कर रहा हूं, लेकिन उनमें से कुछ उपयोग में हैं और खोले नहीं जा सकते हैं। इसके बजाय, यदि वर्तमान प्रति उपयोग में है तो मैं अपनी छाया प्रतिलिपि खोलना चाहता हूं। मैं यह कैसे कर सकता हूँ?यदि वर्तमान प्रति उपयोग में है तो फ़ाइल की छाया प्रतिलिपि खोलना

संदर्भ के लिए, मैं सी # नेट 3.5 का उपयोग कर रहा हूं।

उत्तर

2

मैं वास्तव में नहीं बता सकता, लेकिन निम्नलिखित चैनल 9 वीडियो है।

Windows Vista "Time Warp": Understanding Vista's Backup and Restore Technologies

कुछ कार्यान्वयन विवरण और एपीआई संरचना के बारे में थोड़ा रहे हैं। और मुझे याद है कि उन्होंने बताया कि कैसे छाया प्रतियों को फाइल सिस्टम में मैप किया जाता है।

2

आप पहली प्रक्रिया आप फ़ाइल संभाल शेयर प्रकार निर्दिष्ट कर सकते हैं का नियंत्रण है, तो

string contents1; 
string contents2; 
using (FileStream fs1 = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
{ 
    using (var tr1 = new StreamReader(fs1)) 
    { 
     using (FileStream fs2 = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
     { 
      using (var tr2 = new StreamReader(fs2)) 
      { 
       contents2 = tr2.ReadToEnd(); 
       contents1 = tr1.ReadToEnd(); 
      } 
     } 
    } 
} 

Console.WriteLine(contents1); 
Console.WriteLine(contents2); 
+0

मुझे फ़ाइल लॉक करने की प्रक्रिया का नियंत्रण नहीं है। – Malfist

9

यह सवाल, पहले से ही काफी पुराना है तो मेरा उत्तर बहुत उपयोग की आप के लिए नहीं हो सकता है, लेकिन इतना एक क्यू किया जा रहा है & एक साइट शायद यह किसी और की मदद करता है।

मैं नहीं कर सकते/नहीं पूरे कार्यान्वयन नीचे रख चाहते हैं, लेकिन प्रक्रिया है कुछ इस तरह चला जाता है:

  1. आप के लिए वोल्यूम शैडो सेवा प्रदाता के माध्यम से एक वोल्यूम शैडो की प्रतिलिपि बनाने के ड्राइव जहां आपकी फ़ाइल को पढ़ा जाना है (यह एमएसडीएन पर अच्छी तरह से प्रलेखित है, यहां एक नमूना क्लाइंट भी है जो इन छाया प्रतियों को बनाता है और अधिकतर आपके लिए पर्याप्त होगा)

  2. या तो एक लगातार, या उपयोग करें "कॉलबैक" तंत्र (आपके ऐप को कॉल करता है)

  3. ओपन UNC पथ और CreateFile के माध्यम से इच्छित फ़ाइल (यूएनसी इस तरह दिखता है: \\ \ GlobalRoot \ डिवाइस \ HarddiskVolumeShadowCopyXZY \ yourpath \ yourfile.yourextension?)

  4. क्या जो कुछ भी आप फ़ाइल

    साथ चाहते हैं http://technet.microsoft.com/en-us/library/cc785914%28WS.10%29.aspx और यहाँ:
  5. आप एक लगातार VSC की है, तो आप के बाद आप
काम हो गया

अधिक जानकारी के लिए यहाँ इसे हटाने के लिए नमूना ग्राहक का उपयोग करना चाहिए http://msdn.microsoft.com/en-us/library/bb968832%28VS.85%29.aspx

+2

समस्या यह है कि .NET के अंतर्निहित फ़ाइल प्रबंधन उपकरण \\? \ GlobalRoot निर्देशों तक नहीं पहुंच सकते हैं। आपको वास्तव में Winapi स्तर पर छोड़ना है। अल्फाफएसएस नामक एक लाइब्रेरी है जो कर सकती है, लेकिन इसमें कुछ बड़ी समस्याएं हैं। मैंने इसे थोड़ी देर के लिए इस्तेमाल किया लेकिन फ़ाइल आकार के साथ समस्याओं में भाग गया, दोनों डीडब्ल्यूओआरडी के आकार का प्रतिनिधित्व करने के लिए आवश्यक है, अल्फाएफएसएस केवल निम्न डीडब्ल्यूओआरडी को पढ़ता है। – Malfist

संबंधित मुद्दे