Rsync-Dateiberechtigungen unter Windows


32

Ich habe einen rsync-Dienst, der Dateien von einem entfernten Computer mit einem Computer synchronisiert, der sie auf einem Netzwerklaufwerk ablegt.

Ich benötige die kopierten Dateien, um die nativen Berechtigungen des Zielordners zu übernehmen.

Der Synchronisierungsprozess läuft einwandfrei, aber nachdem er abgeschlossen ist, kann ich nicht auf einige Ordner zugreifen - Berechtigung verweigert.

Ich bin als Domain-Administrator angemeldet. Ich kann auch keine Berechtigungen für diese Ordner ändern. Was gibt?

Führen Sie den Befehl aus:

rsync.exe  -v -rlt -z --delete "src_path" "dst_path"

Welchen Befehl verwenden Sie derzeit zum Synchronisieren?
John T

Antworten:


24

(von http://www.samba.org/ftp/rsync/rsync.html )

Zusammenfassend: Um den Zieldateien (alte und neue) die Quellberechtigungen zu erteilen, verwenden Sie --perms.

Stellen Sie sicher, dass die --permsOption deaktiviert und --chmod=ugo=rwXaktiviert ist (wodurch sichergestellt wird, dass alle nicht maskierten Bits aktiviert werden), um neuen Dateien die Zielstandardberechtigungen zu erteilen (wobei vorhandene Dateien unverändert bleiben).

Wenn Sie möchten, dass das zuletzt genannte Verhalten einfacher eingegeben werden kann, können Sie einen Popup-Alias ​​dafür definieren, z. g, um die Standardgruppe des Zielverzeichnisses zu verwenden):

    rsync alias -Z --no-p --no-g --chmod=ugo=rwX

vielen Dank. Ich konnte mich nicht an die richtigen Flaggen erinnern ...
Vokuhila-Oliba

2
Dies ist für rsync unter Linux relevant, behebt jedoch nicht immer das Problem, wenn es mit einem Windows-Laufwerk synchronisiert wird.
Simon East

18

Cygwins "Posix" -Sicherheit hat mir viele Probleme mit Windows NTFS-Dateiberechtigungen bereitet - sogar --no-permsmit rsync.

Ich habe festgestellt, dass neu erstellte Dateien / Ordner nicht die Standardberechtigungen erben, aber jede Datei / jeder Ordner enthält viele <not inherited>Einträge auf der Registerkarte Erweiterte Sicherheit für Windows-Dateien / -Ordner. (Und dieses Problem hängt nicht nur mit Rsync zusammen).

Ich fand diesen verwandten Beitrag und diesen Link beide sehr hilfreich, um diese Probleme mithilfe der noaclOption in der /etc/fstabDatei von cygwin zu beheben . Der Nachteil dieser Lösung ist, dass Cygwin die Möglichkeit verliert, Datei- / Ordnerberechtigungen festzulegen. In vielen Fällen ist dies jedoch nicht wichtig.

(Wenn Sie dieses Thema googeln, finden Sie wahrscheinlich Verweise auf das Festlegen der Umgebungsvariablen CYGWIN = NONTSEC. Dies gilt jedoch für Cygwin v1.5 und funktioniert ab Cygwin v1.7 nicht.)


Das Bearbeiten der Datei / etc / fstab hat es für mich behoben. Ich musste rsync in cygwin anstelle einer anderen Bereitstellung wie DeltaCopy verwenden, um dies zu tun.
Matt Connolly

Wenn Sie nur das cwrsync-Paket (und nicht cygwin) verwenden, wo legen Sie die fstab-Datei ab?
Simon East

Ich benutze Cygwin nicht. Ich nehme ein reguläres NTFS-Laufwerk, das unter OS X gemountet ist, und rsync-Dateien. Dann haben diese Dateien in Windows die Berechtigungen völlig verkorkst. Auf der Suche nach einer Lösung.
Steven Lu

Es sieht so aus, als ob ich die "riskante" Methode zum Mounten von NTFS unter MacOS mit dem eingebauten Treiber verwendet habe, der viel weniger stabil sein soll als die Treiber paragon / tuxera und FUSE. Denken Sie also daran, wenn Sie im selben Boot
Steven Lu

8

Unter Windows mit DeltaCopy könnte ich damit arbeiten:

rsync --perms --chmod=a=rw,Da+x ...

Es funktionierte sogar mit --recursive


Dies funktionierte meistens, aber ich musste die Option --chmod ändern, um a = rwx einzuschließen, damit Batchdateien usw. ordnungsgemäß ausgeführt werden.
Taylor Gerring

1
Dies ist die einzige Option, die für mich funktioniert hat. Versuchte die oben vorgeschlagenen --no-perms und die fstab ohne Erfolg. Dieser gab mir nur einige <nicht geerbte> Berechtigungen, die den von mir gewünschten Berechtigungen entsprachen und keine Verweigerungsberechtigung für den ausführenden Benutzer enthielten. Vielen Dank!
AronVanAmmers

DeltaCopy enthält auch eine ausführbare chmod-Datei, mit der die Berechtigungen nachträglich festgelegt werden können, z. B. chmod -R 777 / cygdrive / g
jnnnnn 13.11.12

1
--perms fehlte mir, um die Kopie als Readonly-Problem zu lösen.
Tyler S. Loeper

1

Rsync, zumindest auf Cygwin hat den folgenden Schalter:

-A, --acls erhalten ACLs (impliziert --perms)

Meine Cygwin-Version ist:

CYGWIN_NT-6.3 1.7.29 (0.272 / 5/3) 2014-04-07 13:46 x86_64 Cygwin

Hoffe das hilft!


1
Willkommen bei Super User! Während dies theoretisch die Frage beantworten kann, ist es aus Gründen der Verbesserung vorzuziehen, Details darüber aufzunehmen, wie diese die Frage beantworten (das Zitieren einer Quelle zur Sicherung Ihres Anspruchs ist ein Plus).
G-Man sagt, dass Monica am

1

Die bestbewertete Antwort funktioniert nur, wenn Sie rsync über ssh in Windows verwenden. Wenn Sie den Daemon cygwin rsync verwenden, hilft es nicht, nur noacl in / etc / fstab zu verwenden. Aus irgendeinem Grund wird die Vererbung nicht berücksichtigt, auch wenn Sie den Benutzer loswerden und noacl versuchen, überschreiben usw. Dies scheint zu passieren Wenn Sie eine Synchronisierung auf einem Laufwerk der obersten Ebene durchführen, verwenden Sie path = / cygdrive / whatever in /etc/rsyncd.conf. Stattdessen müssen Sie einen separaten Mount-Punkt in / etc / fstab erstellen und diesen stattdessen in Ihrer rsyncd.conf verwenden:

D:\     /d_drive  ntfs    binary,posix=0,noacl,user,override      0 0

In /etc/rsyncd.conf hätten Sie ungefähr Folgendes:

use chroot = yes

[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser

Dann musste ich das Windows-System neu starten. Nur der Neustart des rsync-Dienstes allein schien nicht zu helfen. Er verursachte weiterhin chroot- und chdir-Fehler (obwohl / d_drive gemountet war und chroot = false verwendet wurde und ich schreiben konnte). Dann, wenn Sie in das Windows-System rsync verwenden:

cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o  ./ rsync://someUser@localhost:remotePort/d_drive/

1

In der Vergangenheit habe ich meinem aktuellen Benutzer die Berechtigungen in Windows neu zugewiesen, indem ich takeownan einer Eingabeaufforderung mit erhöhten Rechten Folgendes verwendet habe:

takeown /f <NameOfFolder> /r /d Y

Wenn Sie die richtigen rsyncFlags verwendet haben, ist dies natürlich unnötig, aber wenn rsyncSie die bereits kopierten Dateien nicht erneut ausführen möchten, würde ich dies empfehlen.


1
Willkommen bei Super User! Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage.
DavidPostill

Angesichts dessen lautet die Frage "Was gibt es?" Ich würde sagen, die Antwort ist nicht einmal eine Lösung, sondern eine Erklärung, daher beantworten die meisten Antworten hier nicht die Frage. Dies ist immer noch eine nützliche und kontextbezogene Ergänzung des Themas, aber ich kann sie gegebenenfalls in einen Kommentar verschieben.
CodingLumis

Oh, warte, ich kann keine Kommentare hinzufügen, da ich keinen Ruf von 50+ habe und dieser hier bleiben muss.
CodingLumis

correct rsync flags> und was wäre das?
oldmud0

@ oldmud0 In den Antworten vor mir finden Sie entsprechende Kombinationen von Flags, mit denen die Berechtigungen während des Kopiervorgangs festgelegt werden. Meine Lösung ist ideal für diejenigen geeignet, die die Dateien bereits kopiert haben und sie nicht löschen und erneut kopieren möchten, um sicherzustellen, dass die Berechtigungen korrekt sind.
CodingLumis

0

Ich hatte dieses Problem mit rsnapshot, das Rsync für die Sicherung verwendet. Ich habe es überschrieben, indem ich --relativevon entfernt habe rsync_long_args. Nach diesem Ordner cfür die Festplatte selbst mit seltsamen Berechtigungen erstellt nicht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.