Robocopy-Erlaubnis abgelehnt

65550
Edosoft

Robocopy ist mit Windows 7 vorinstalliert. Ich habe es schon oft verwendet. Ich habe versucht, einen Ordner auf eine Remote-Freigabe mit zu kopieren

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

Als Ergebnis bekomme ich die Erlaubnis verweigert. Mit dem Explorer kann ich Dateien in diese Freigabe kopieren. Ich habe eine Eingabeaufforderung mit Administratorberechtigungen mit demselben Ergebnis geöffnet. Die Freigabe ist Lese- / Schreibzugriff für die Öffentlichkeit.

BEARBEITEN Ich habe der Freigabe erfolgreich einen Laufwerksbuchstaben zugeordnet, aber Robocopy schlägt immer noch fehl

EDIT Ich habe den Schalter / B ohne Erfolg hinzugefügt. Der genaue Fehler ist:

2009/09/26 20:43:14 ERROR 5 (0x00000005)  Accessing Destination Directory \\drobo\Drobo\fotos\__NEW\Ericsson\ 
10
Geben Sie 'net use' ein und drücken Sie die Eingabetaste. Frage bitte mit Ergebnis bearbeiten Canadian Luke vor 12 Jahren 0
Haben Sie versucht, den Besitz des freigegebenen Ordners zu übernehmen? Befinden Sie sich in einer Arbeitsgruppe oder in einer Active Directory-Domäne? CGA vor 14 Jahren 0
Ich verwende eine Arbeitsgruppe. Ich habe den Besitz übernommen. Edosoft vor 14 Jahren 0
Haben Sie versucht, den freigegebenen Ordner einem Laufwerkbuchstaben zuzuordnen? CGA vor 14 Jahren 0
Ja, das habe ich zuerst probiert. Gleiches Ergebnis Edosoft vor 14 Jahren 0
@CGA: Robocopy verarbeitet UNC-Pfade gut. surfasb vor 12 Jahren 0
Wenn Sie den Parameter / V verwenden, werden im Verbose-Modus weitere Informationen angezeigt? Der Fehler 5 ist normalerweise eine Nachricht, die den Zugriff verweigert. Können Sie an einer Eingabeaufforderung den COPY-Befehl verwenden? Funktioniert dies mit anderen UNCs oder ist der Drobo der einzige, der ausfällt? Wenn ja, sind die Drobo-Leute vielleicht der beste Ort, um Antworten zu suchen. Jeffery Hicks vor 14 Jahren 0

4 Antworten auf die Frage

12
harrymc

Von hier zitiert :

In meinem Fall begann ich mit voller Kontrolle sowohl der Quell- als auch der Zielfreigaben. Das Problem war, dass Robocopy die Zugriffssteuerungsliste auf der Zielfreigabe auf einen Nullwert zurückgesetzt hat (die Berechtigung hat keine Berechtigung), bevor mit der Rekursion von Unterverzeichnissen begonnen wurde. Nach einigen schnellen Tests ist meine Schlussfolgerung, dass Robocopy vererbte Berechtigungen nicht verarbeitet. Angenommen, Sie kopieren C: \ Share1 nach D: \, und C: \ Share1 erbt seine Berechtigungen vom Verzeichnis C: \ root, es hat jedoch keine explizite ACL. Wenn Sie also seine ACL kopieren, kopieren Sie tatsächlich ... nichts. Durch das Kopieren einer leeren ACL in Ihr Ziel werden Ihre Berechtigungen im ersten Schritt der Kopie entfernt, und alle nachfolgenden Schreibvorgänge in die Freigabe schlagen mit Fehler 5 fehl.

Dies ist nur ein Problem, wenn Sie von einer Quelle kopieren, auf die Sie mit vererbten Berechtigungen zugreifen, und von einem Ziel, auf das Sie OHNE vererbte Berechtigungen zugreifen. Wenn Sie C: \ (das Sie explizit in seiner ACL gespeichert hat) nach D: \ kopieren, liegt kein Problem vor. Wenn dies tatsächlich Ihr Problem ist, können Sie es beheben, indem Sie sich mit voller Kontrolle explizit der Quell-ACL hinzufügen. Wenn die Kopie ausgeführt wird, wird Ihr ACL-Eintrag an das Ziel kopiert, und die nachfolgenden Dateikopien können geschrieben werden. Sie können Ihre Änderungen (sowohl an der Quelle als auch am Ziel) rückgängig machen, nachdem die Kopie abgeschlossen ist.

Wenn Sie trotz des oben genannten Problems weiterhin Probleme haben, sollten Sie den Schalter / B in Erwägung ziehen, der versucht, die Datei mit Ihren Berechtigungen als Sicherungsoperator zu sichern. Auf diese Weise können Sie Dateien kopieren, die Sie andernfalls nicht erstellen konnten, wenn Sie sich nicht in der ACL auf der Zielfreigabe befinden. Robocopy versucht standardmäßig, eine neu startbare Kopie zu versuchen. Durch den Verzicht auf neustartfähige Kopien ist der schlimmste Fall der Fall, dass Sie die aktuell übertragene Datei im Falle einer Unterbrechung verlieren. Beim nächsten Durchlauf wird diese Datei von Anfang an neu gestartet, anstatt teilweise.

Hoffentlich hilft das. Hier ein Zitat aus dem Robocopy-Dokument von Microsoft bezüglich der Option / B:

Zitat:

Wenn Sie NTFS-Sicherheitsinformationen (ACLs) zusammen mit den Dateidaten kopieren, können Sie Dateien kopieren, auf die Sie Lesezugriff haben, jedoch keinen Schreibzugriff. Nachdem eine solche Datei einmal kopiert wurde und die ACLs angewendet wurden, kann es vorkommen, dass beim Versuch, die Datei erneut zu kopieren, die Fehlermeldung "Zugriff verweigert" angezeigt wird. In diesem Fall sollten Sie den Schalter / B oder / ZB verwenden, um die Dateien im Sicherungsmodus zu kopieren.

/ B kopiert alle Dateien mit Sicherungssemantik (Sicherungsmodus). / ZB versucht zunächst, Dateien im neustartfähigen Modus zu kopieren (für eine höhere Ausfallsicherheit). Wenn dies jedoch mit dem Fehler "Zugriff verweigert" fehlschlägt, wird die Kopie im Sicherungsmodus automatisch erneut versucht.

5
Andreas Grech

Versuchen Sie, Dateien mit der Markierung zu kopieren Backup:

/ B: Dateien im Sicherungsmodus kopieren.

Thx, ich werde es versuchen. Edosoft vor 14 Jahren 0
Was ist der Unterschied mit dem Befehl / ZB? Senior Systems Engineer vor 9 Jahren 0
2
Marcus

Zusätzlich zu den vorherigen Antworten kann ich den Fix erweitern, der für mich funktioniert hat. In meinem Fall hatte ich lokale Ordner und Dateien, deren Besitz von einem anderen Benutzer des Systems beansprucht wurde. Ich habe einfach das Eigentum an allen Ordnern und Unterordnern gefordert und alles funktionierte gut ohne den Sicherungsschalter.

Übernehmen Sie den Besitz eines Ordners und seiner Unterordner: http://technet.microsoft.com/de-de/magazine/ff404240.aspx

In diesem Fall muss der Ordner vom Batch-Skript-Benutzerkonto für den Besitz beansprucht werden. Senior Systems Engineer vor 9 Jahren 0
1
N.Naik

Sie können auch ein Skript schreiben, um dies automatisch zu beheben

# 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)  } 
Es ist erwähnenswert, dass dieses Skript für Windows Powershell verwendet wird. Kevin Fegan vor 8 Jahren 0