Ich habe ein scheinbar einfaches Problem, aber bis jetzt habe ich keine Lösung gefunden: Ich möchte das oberste Verzeichnis von einem Rsync ausschließen, während alle seine Kinder synchronisiert werden. Das besondere Problem ist, dass ich keine Berechtigung zum Ändern der Zeiten des obersten Verzeichnisses habe, aber möchte, dass alle Kinder die Zeiten ordnungsgemäß synchronisieren.
Der von mir verwendete Befehl rsync lautet wie folgt:
rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/
und server.example.com:/usr/local/directory/
sieht so aus:
drwxrws--- 5 root staff 24576 Jul 9 15:00 .
(mein lokaler Benutzer ist Mitglied von staff
)
Wenn ich rsync ausführe, wird folgende Fehlermeldung angezeigt:
rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23
Dies ist die Version 3.0.9 auf dem lokalen Rechner und 3.0.7 auf dem entfernten Rechner, auf denen Debian ausgeführt wird.
Antworten:
Ich denke, die Filterregeln von rsync stimmen nicht mit dem Verzeichnis der obersten Ebene überein, daher ist es immer synchronisiert. Eine Problemumgehung besteht darin, alle Dateien in diesem Verzeichnis anstelle des Verzeichnisses selbst zu synchronisieren.
Fügen Sie
.[!.]*
danach hinzu,*
wenn Sie Punktdateien im obersten Verzeichnis haben und..?*
wenn Sie Dateinamen haben, die mit zwei Punkten beginnen.quelle
*
war, dass--delete
keine Dateien gelöscht wurden, da diese nicht Teil der Suche waren.