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.
a -> b
, b -> c/foo
, c -> d/e
: eine Anforderung an Kopie a
auch kopieren soll b
, c
, c/foo
, d
, d/e
und d/e/foo
).
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?