web-dev-qa-db-fra.com

La permission de Robocopy refusé

Robocopy est préinstallé avec Windows 7. Je l'ai utilisé plusieurs fois dans le passé. J'ai essayé de copier un dossier sur une part distante avec

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

En conséquence, je reçois la permission refusée. Utilisation de l'explorateur, je peux copier des fichiers sur cette action. J'ai ouvert une invite de commande avec les autorisations d'administrateur avec le même résultat. La part est lue/écriture pour le public.

[~ # ~] éditer [~ # ~ ~] J'ai correctement cartographié une drivière à la part, mais Robocopy échoue toujours

ÉDITER J'ai ajouté le commutateur/B sans succès. L'erreur exacte est:

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

Essayez de copier des fichiers à l'aide du drapeau Backup:

/ B: Copier des fichiers en mode de sauvegarde.

5
Andreas Grech

En plus des réponses précédentes, je peux étendre avec le correctif qui a fonctionné pour moi. Dans mon cas, j'ai eu des dossiers et des dossiers locaux étaient la propriété a été revendiquée par un autre utilisateur sur le système. J'ai simplement revendiqué la propriété de tous les dossiers et sous-dossiers et tout fonctionnait bien sans le commutateur de sauvegarde.

Attribuez la propriété d'un dossier et de ses sous-dossiers: http://technet.microsoft.com/en-us/magazine/ff404240.aspx

2
Marcus

Vous pouvez également écrire un script pour résoudre ce problème automatiquement.

# 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