Es muss nicht von gemacht werden rsync
, aber es wäre schön, kein Skript schreiben zu müssen, um dies zu tun, und es rsync
ist sehr nah an dem, was ich will.
rsync -a
(oder -l
) kann Symlinks beibehalten und Symlinks -L
dereferenzieren und kopieren, als ob es sich um eine normale Datei / ein normales Verzeichnis handelt. Ist es jedoch möglich, den Symlink beizubehalten und auch die Dateien / Verzeichnisse zu kopieren, auf die die Links verweisen?
Hier ist ein Beispiel. Angenommen, wir haben diese Ordnerhierarchie:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others
und wenn ich es tue rsync -aR dirA dest
(oder etwas anderes), möchte ich genau diese in dest
:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2
Ist das möglich mit rsync
? Vielen Dank.
Nehmen wir an, dass Symlinks mit einem absoluten Pfad oder einem Hinweis außerhalb des Quellverzeichnisses ignoriert werden können.
dirA/link
es sich um einen Symlink zu handelt../dirB/file
, dies als KopierendirB/file
nachdest/dirB/file
unddirA/link
nach behandelt werden solltedest/dirA/link
. Was ist, wenndirA/link
ein Link zu ist../../another_file
? Was passiert im Allgemeinen, wenndirA/link
auf ein Verzeichnis verwiesen wird, das sich weiter oben im Verzeichnisbaum befindet?a -> b
,b -> c/foo
,c -> d/e
: eine Anforderung an Kopiea
auch kopieren sollb
,c
,c/foo
,d
,d/e
undd/e/foo
).Antworten:
Wenn Sie den Symlink-Namen kennen und den Link und das Ziel übertragen möchten, können Sie:
Der erste
rsync
überträgt nur diesymlink
. Der zweite Befehl findet den tatsächlichen Verzeichnisnamen und der zweitersync
überträgt den Verzeichnisinhalt.quelle
Dies wäre nur dann möglich, wenn Sie alle in 'mydir' wären und 'mydir' von einem Ort zum anderen synchronisieren würden. Rsync kann nicht außerhalb des von Ihnen angegebenen Pfads kopieren (mit Ausnahme der folgenden Links). z.B
quelle