Ich habe also ein scheinbar einfaches Problem, für das ich bisher aber noch keine Lösung gefunden habe: Ich möchte das oberste Verzeichnis von einem rsync ausschließen, aber trotzdem alle seine untergeordneten Verzeichnisse synchronisieren. Das besondere Problem besteht darin, dass ich keine Berechtigung habe, die Zeiten des obersten Verzeichnisses zu ändern, aber möchte, dass alle untergeordneten Verzeichnisse ordnungsgemäß synchronisierte Zeiten haben.
Der von mir verwendete rsync-Befehl 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, erhalte ich die folgende Fehlermeldung:
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 Version 3.0.9 auf dem lokalen Computer und 3.0.7 auf dem Remote-Computer, beide Computer laufen unter Debian.
Antwort1
Ich denke, die Filterregeln von rsync können nicht mit dem obersten Verzeichnis übereinstimmen, daher wird es immer synchronisiert. Eine Problemumgehung besteht darin, alle Dateien in diesem Verzeichnis zu synchronisieren, anstatt das Verzeichnis selbst.
rsync -rlptDu -- * server.example.com:/usr/local/directory/
Fügen Sie .[!.]*
danach hinzu *
, wenn sich im obersten Verzeichnis Punktdateien befinden und ..?*
wenn Ihre Dateinamen mit zwei Punkten beginnen.
Antwort2
Es scheint, dass rsync das oberste Verzeichnis mit folgendem Befehl ausschließen kann --files-from
:
$ rsync -anv from/ to/
sending incremental file list
./
a
b.test
sent 97 bytes received 25 bytes 244.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
$ printf '%s\n' 'a' 'b.test' | rsync -anv --files-from=- from/ to/
building file list ... done
a
b.test
sent 88 bytes received 22 bytes 220.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
Bin gerade darüber gestolpert und hinterlasse hier einen Hinweis, falls es jemandem (oder mir in der Zukunft) hilft.