2011-06-06 17 views
12

Yazmakta olduğum uygulamanın kilitli dosyaları kopyalayabilmesi gerekiyor. Birim Gölge Kopyası'nı kullanmaya çalıştık ve dosyayı kopyalamada başarılı olurken, dosya kilitlenirken dosya kilitli olan uygulama kilitlendi çünkü dosya kopyalanıyordu.Kilitli bir dosyayı doğrudan diskten nasıl kopyalarım ve dosyanın sağlam olduğundan emin olur musunuz?

Tek seçeneğimin işletim sistemini atlayıp doğrudan diskten okuduğuna inanmaktan vazgeçtim. Sorun şu ki, doğrudan diske okursam, dosyanın bütünlüğünden emin olamıyorum, eğer bir yazının ortasındaysa, dosya hasarlı bir durumda olacaktır.

Arama saatlerinden sonra, dosyayı doğrudan diskten kopyalayan bir yardımcı program bulabildim ve kopyalarken dosyanın önbelleğe alınmadığını doğrulamak için bir dosya sistemi sürücüsü kullandı. Bununla birlikte, bu hizmet, muhtemelen kullanmanız gerekecek lisans için 100 k + pahalı, pahalıdır.

Çalıştığım şeyi gerçekleştirme konusunda herhangi bir fikri olan var mı?

Sistemi yalnızca NTFS birimlerine kısıtlamayı planlıyoruz.

+0

gerçekten NTFS'de yaşamak gerekir mi? Uygulamayı ext4 veya benzeri bir linux üzerinde şarap altında çalıştırmayı deneyeceğim ve sadece dosyayı kopyaladım. – hirschhornsalz

+0

Evet, NTFS'de olmamız gerekiyor, donanım üzerinde kontrolümüz yok. –

+3

Gölge kopyasını kullandığınızda uygulamanın neden çökmesine biraz kafam karıştı. Bu olmamalıydı. Gölge kopyası, tüm dosya sisteminin salt okunur bir kopyasıdır. Kilitleme mekanizması etkilenmemelidir. – UrOni

cevap

1

Napalm tarafından yazılan DirectCopy adlı bir C programı kullanarak sona erdim. Oldukça iyi çalışıyor.

http://www.rohitab.com/discuss/topic/24252-ntfs-directcopy-method-from-napalm/

+1

Bu dosyanın safhasının bütünlüğünü doğrulamadığını, ancak dosya kilitleri oluşturmadan dosyaların doğrudan kopyalarını yapacağı not edilmelidir. VSS kopyalarının uygulamayı kilitledikleri bir uygulama tarafından kullanılan bir dosyayı kopyalayabilmişti. –

1

Bir kilit içeren uygulamanın işlem kimliğini yakalayabilir ve kopyasını gerçekleştirirken iş parçacığını askıya alabilir misiniz? Bu http://www.codeproject.com/KB/threads/pausep.aspx

Edit gibi bir şey: nedir aşağı oy

?

AŞAĞIDAKİ YORUMLAR OKUYUN, BU CEVAP, SORULAN SORULAR İÇİN GEÇERLİDİR. "Katmanlı sürücüler" in açıklaması

+0

Maalesef, uygulamanın çalışmaya devam etmesi gerekiyor ve bunu kopyalarken dosyadan okuma ve yazma çok iyi olabilir. –

+0

Uygulama tam olarak nedir?ya da daha iyisi, neden böyle bir yedeği almanız gerekiyor? – Geoffrey

+0

Hedef dosyaya createfile/read/write/clos işlevlerini bağlayan ve gereksinim duyduğunuz önbelleği uygulayan bir dll enjekte edebilir ve ardından dosya yedeklemesi tamamlandıktan sonra değişiklikleri uygulayabilirsiniz. – Geoffrey

0

This yararlı olabilir. Bununla ilgili hiçbir şey bilmiyorum.

Ayrıca, dosya kilitliyse, daha sonra sadece 'izleyiniz' ve kilidi açılmasını bekleyip daha sonra hızlı bir şekilde kopyalayabilir misiniz?

İlgili konular