Ordner mit symbolischen Links kopieren

Ordner mit symbolischen Links kopieren

Wie kann ich einen Ordner kopieren, der symbolische Links enthält, und die symbolischen Links im Zielordner beibehalten? Ich mache so etwas mit PHP/Bash:

system("cp -r production-clone-target production-sites/{$instanceName}");

aber die symbolischen Links werden nicht im Zielordner angezeigt.

Antwort1

--preserve=linksVersuchen Sie, den Schalter zu Ihrem Befehl hinzuzufügen cp.

Aus man cp:

    --preserve[=ATTR_LIST]
          preserve the specified attributes (default: mode,ownership,timestamps), 
if possible additional attributes: context, links,xattr, all

Bearbeiten: Wenn Sie unter OS X arbeiten, verwenden Sie cp -a.

Antwort2

Sie können auch rsync verwenden:

-l, --links                 copy symlinks as symlinks

Mir gefällt -a, das dieses hier auch mit einschließt, um auch Unterverzeichnisse etc. zu kopieren.

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

In Ihrem Codebeispiel könnten Sie also Folgendes tun:

system("rsync -a production-clone-target production-sites/{$instanceName}");

Antwort3

Lassen wir die berechtigten Bedenken hinsichtlich der Verwendung system()in Ihrem PHP-Programm außer Acht:

cpverfügt hierfür möglicherweise nicht über standardisierte Optionen, die bei Linux und BSDs üblich sind, aber paxes gibt sie.

( cd Quelle && pax -pp -r -w * Ziel/ )

verwandte Informationen