it-swarm.asia

Izin Robocopy ditolak

Robocopy sudah diinstal sebelumnya dengan Windows 7. Sebelumnya saya pernah menggunakannya. Saya mencoba menyalin folder ke share jarak jauh

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

Akibatnya saya mendapat izin ditolak. Menggunakan Explorer saya bisa menyalin file ke share ini. Saya telah membuka perintah Prompt dengan izin administrator dengan hasil yang sama. Bagikan dibaca/tulis untuk umum.

EDIT Saya telah berhasil memetakan driveletter untuk dibagikan, tetapi robocopy masih gagal

SUNTING Saya telah menambahkan sakelar/B tanpa hasil. Kesalahan sebenarnya adalah:

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

Dikutip dari di sini :

Dalam kasus saya, saya mulai dengan kontrol penuh pada bagian sumber dan tujuan. Masalahnya adalah bahwa Robocopy me-reset ACL pada share tujuan ke nilai nol (tidak ada yang memiliki izin) sebelum mulai mengulang subdirektori. Setelah beberapa tes cepat, kesimpulan saya adalah bahwa Robocopy tidak menangani izin yang diwarisi. Katakanlah Anda menyalin C:\Share1 ke D: \, dan C:\Share1 mewarisi izinnya dari direktori root C: \, ia sebenarnya tidak memiliki ACL eksplisit. Karena itu, ketika Anda menyalin ACL-nya, Anda sebenarnya menyalin ... tidak ada. Dengan menyalin ACL kosong ke tujuan Anda, izin Anda akan dihapus pada langkah pertama dari salinan, dan semua penulisan berikutnya untuk berbagi gagal dengan Kesalahan 5.

Ini hanya masalah ketika Anda menyalin dari sumber yang Anda akses dengan izin yang diwarisi dan tujuan yang Anda akses TANPA izin yang diwarisi. Jika Anda menyalin C:\(yang membuat Anda secara eksplisit di ACL-nya), ke D: \, tidak ada masalah. Jika ini memang masalah Anda, Anda dapat mengatasinya dengan menambahkan diri Anda secara eksplisit ke sumber ACL dengan kontrol penuh. Ketika salinan berjalan, entri ACL Anda digandakan ke tujuan, dan salinan file selanjutnya dapat ditulis. Anda dapat membatalkan perubahan (baik pada sumber maupun tujuan) setelah salinan selesai.

Jika Anda terus mengalami masalah meskipun hal tersebut di atas, Anda mungkin ingin mempertimbangkan untuk mencoba sakelar/B, yang mencoba mencadangkan file menggunakan hak istimewa Anda sebagai Operator Pencadangan. Ini akan memungkinkan Anda untuk menyalin file yang Anda tidak bisa, misalnya, jika Anda tidak berada di ACL pada bagian tujuan Anda. Robocopy default untuk mencoba salinan yang dapat dimulai kembali. Dengan memberikan salinan yang dapat diulang kembali, kasus terburuknya adalah Anda kehilangan file yang saat ini ditransfer jika terjadi gangguan. Lulus berikutnya akan me-restart file itu dari awal alih-alih setengah jalan.

Semoga itu bisa membantu. Berikut ini kutipan dari dokumen Robocopy Microsoft tentang sakelar/B:

Kutipan:

Jika Anda menyalin informasi keamanan NTFS (ACL) bersama dengan data file, dimungkinkan untuk menyalin file yang telah Anda baca akses, tetapi tidak akses tulis. Setelah file seperti itu disalin sekali, dan ACL diterapkan, Anda mungkin menemukan bahwa untuk mendapatkan kesalahan "Akses Ditolak" ketika Anda mencoba untuk menyalin file lagi. Dalam situasi ini, Anda harus menggunakan sakelar/B atau/ZB untuk menyalin file dalam Mode Cadangan.

/ B menyalin semua file dengan semantik cadangan (Mode Cadangan)./ZB pertama kali mencoba untuk menyalin file dalam mode restartable (untuk ketahanan yang lebih besar) tetapi jika gagal dengan kesalahan "Akses Ditolak" itu secara otomatis mencoba kembali menyalin menggunakan Mode Cadangan.

12
harrymc

Coba salin file menggunakan flag Backup:

/ B: Menyalin file dalam mode Cadangan.

5
Andreas Grech

Selain jawaban sebelumnya, saya dapat memperluas dengan perbaikan yang bekerja untuk saya. Dalam kasus saya, saya memiliki folder dan file lokal yang kepemilikannya diklaim oleh pengguna lain pada sistem. Saya hanya mengklaim kepemilikan semua folder dan sub folder dan semuanya bekerja dengan baik tanpa saklar cadangan.

Klaim kepemilikan folder dan sub foldernya: http://technet.Microsoft.com/en-us/magazine/ff404240.aspx

2
Marcus

Anda juga dapat menulis skrip untuk memperbaikinya secara otomatis

# 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)

}
1
N.Naik