Robocopy izni reddedildi


11

Robocopy Windows 7 ile önceden kurulmuştur. Geçmişte birçok kez kullandım. İle bir klasörü uzak bir paylaşıma kopyalamaya çalıştım

robocopy c:\source "\\server\share\path" /s /r:2 /w:2` 

Sonuç olarak izin almıyorum. Explorer kullanarak dosyaları bu paylaşıma kopyalayabilirim. Aynı sonuca sahip yönetici izinlerine sahip bir komut istemi açtım. Paylaşım halka açık / okunur.

DÜZENLEME Paylaşıma bir aktarma aracı başarıyla eşledim, ancak robokopi hala başarısız oluyor

EDIT / B anahtarını başarıyla ekledim. Kesin hata:

2009/09/26 20:43:14 ERROR 5 (0x00000005) 
    Accessing Destination Directory \\drobo\Drobo\fotos\__NEW\Ericsson\

Paylaşılan klasörü bir sürücü harfiyle eşlemeyi denediniz mi?
CGA

Evet önce denedim. Aynı sonuç
Edosoft

Paylaşılan klasörün sahipliğini almaya çalıştınız mı? Bir çalışma grubu veya bir Active Directory etki alanında mısınız?
CGA

Bir Çalışma Grubu kullanıyorum. Sahiplik aldım.
Edosoft

/ V parametresini kullanırsanız, Ayrıntılı mod size başka bilgiler verir mi? Hata 5 genellikle erişim reddedildi iletisidir. Bir komut isteminden COPY komutunu kullanabilirsiniz? Bu diğer UNC'lerle çalışıyor mu yoksa tek başarısızlık Drobo mu? Eğer öyleyse, Drobo halkı cevaplar için en iyi yer olabilir.
Jeffery Hicks

Yanıtlar:


12

Alıntı sahibi burada :

Benim durumumda, hem kaynak hem de hedef paylaşımlar üzerinde tam kontrol ile başladım. Sorun, Robocopy'nin alt dizinleri yinelemeye başlamadan önce hedef paylaşımdaki ACL'yi sıfır değerine (hiç kimsenin izni yok) sıfırlamasıydı. Bazı hızlı testlerden sonra sonucum Robocopy'nin devralınan izinleri işlemediğidir. Diyelim ki C: \ Share1'i D: \ 'ye kopyalıyorsunuz ve C: \ Share1 izinlerini C: \ root dizininden devralıyor, aslında açık bir ACL'si yok. Bu nedenle, ACL'sini kopyaladığınızda, aslında hiçbir şey kopyalamazsınız. Boş bir EKL'yi hedefinize kopyalayarak kopyanızın ilk adımında izinleriniz kaldırılır ve paylaşıma sonraki tüm yazma işlemleri Hata 5 ile başarısız olur.

Bu, yalnızca devralınan izinlerle WITH eriştiğiniz bir kaynaktan ve devralınan izinler OLMADAN eriştiğiniz bir hedeften kopyalama yaparken bir sorundur. C: \ (açıkça ACL'sine sahip olan) D: \ 'ye kopyalarsanız, sorun yoktur. Bu gerçekten sizin probleminizse, kendinizi tam kontrole sahip kaynak ACL'ye açıkça ekleyerek çözebilirsiniz. Kopyalama çalıştırıldığında, ACL girişiniz hedefe çoğaltılır ve sonraki dosya kopyaları yazılabilir. Kopyalama tamamlandıktan sonra değişikliklerinizi (hem kaynakta hem de hedefte) geri alabilirsiniz.

Yukarıdakilere rağmen sorun yaşamaya devam ederseniz, Yedekleme İşleci olarak ayrıcalıklarınızı kullanarak dosyayı yedeklemeye çalışan / B anahtarını denemeyi düşünebilirsiniz. Bu, örneğin hedef paylaşımınızdaki ACL'de değilseniz, aksi halde yapamayacağınız dosyaları kopyalamanıza olanak tanır. Robocopy varsayılan olarak yeniden başlatılabilir bir kopya girişiminde bulunur. Yeniden başlatılabilir kopyalardan vazgeçerek en kötü durum, bir kesinti durumunda aktarılmakta olan dosyayı kaybetmenizdir. Bir sonraki geçiş, bu dosyayı partway yerine yeniden başlatacak.

Umarım yardımcı olur. İşte Microsoft'un Robocopy belgesinden / B anahtarıyla ilgili bir alıntı:

Alıntı:

NTFS güvenlik bilgilerini (ACL) dosya verileriyle birlikte kopyalarsanız, okuma erişiminiz olan ancak yazma erişiminiz olmayan dosyaları kopyalayabilirsiniz. Böyle bir dosya bir kez kopyalandıktan ve ACL'ler uygulandıktan sonra, dosyayı tekrar kopyalamaya çalıştığınızda “Erişim Reddedildi” hatasıyla karşılaşabilirsiniz. Bu durumda, dosyaları Yedekleme Modunda kopyalamak için / B veya / ZB anahtarını kullanmalısınız.

/ B, yedekleme semantiği olan tüm dosyaları kopyalar (Yedekleme Modu). / ZB ilk olarak dosyaları yeniden başlatılabilir modda (daha fazla esneklik için) kopyalamaya çalışır, ancak bu bir "Erişim Reddedildi" hatasıyla başarısız olursa, Yedekleme Modunu kullanarak kopyayı otomatik olarak yeniden dener.



2

Önceki cevaplara ek olarak, benim için çalışan düzeltme ile genişletebilirim. Benim durumumda yerel klasörlerim vardı ve dosyalar sistemdeki başka bir kullanıcı tarafından sahiplenildi. Sadece tüm klasörlerin ve alt klasörlerin sahipliğini talep ettim ve her şey yedek anahtar olmadan iyi çalıştı.

Bir klasörün ve alt klasörlerinin sahipliğini talep edin: http://technet.microsoft.com/en-us/magazine/ff404240.aspx


Yani bu durumda, klasör toplu iş komut dosyası kullanıcı hesabı tarafından sahiplik talep edilmelidir?
Kıdemli Sistem Mühendisi

1

Bunu otomatik olarak düzeltmek için bir komut dosyası da yazabilirsiniz

# To run robocopy with logging which logs errors
robocopy source dest /MIR /NP /TEE /R:0 /W:1 /FFT /LOG+:log.txt 

# get errors from log and use set-content so it only writes if there are errors.
get-content log.txt | select-string "0x00000005" | set-content errors.log

#if statements to check if it even had errors.  only if errors go into if statement.
if (test-path errors.log) {

    #now capture the paths exactly.  Get-unique so it writes one error only once. 
    #Will assume you're using UNCs to copy vs. drive letters, please modify as necessary
    select-string -path errors.log -pattern "\\\\.*$" | %{ $_.Matches[0].captures[0].value} | get-unique > paths.log

    #just do foreach loop for each path.
    foreach ($path in $paths) { 

        #use subinacl to take ownership and assign permissions, it is better and faster 
        #than icacls and ps ways but you can use whatever works.  Report the changes you 
        #made.  if '$path' is a folder then you will need to modify subinacl command to 
        #inherit etc.  look it up.
        .\subinacl /file "$path" /setowner="YOUR ID" >> change-perms.log
        .\subinacl "$path" /grant="your ID"=F >> change-perms.log

    }

    #run your robocopy command again to copy missed file in previous step. 
    robocopy source dest /MIR /NP /TEE /R:0 /W:1 /FFT /LOG+:log.txt 

    #Delete the error log file so it does not go in to if loop next time you run.
    remove-item error.log (use force, erroraction etc as necessary)

}

Bu komut dosyasının Windows Powershell ile kullanım için olduğunu belirtmek gerekir.
Kevin Fegan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.