2 Stimmen

cp: Zyklus erkannt:

Eine Idee zu cp: Zyklus erkannt: Fehler bei Solarenergie. Ich erhalte dies, während ich Daten von einem Verzeichnis in ein anderes Verzeichnis kopiere.

7voto

paxdiablo Punkte 809679

Bei einer rekursiven Kopie wird dieselbe "Datei" zweimal besucht. Dies kann durch zirkulär angelegte Verknüpfungen verursacht werden. Wenn Sie zum Beispiel das Verzeichnis level1 :

mkdir level1

dann symbolisch eine Datei darunter verlinken à dieses Verzeichnis:

cd level1
ln -s . level2

endet man im Grunde mit einem Zirkelbezug. Das heißt, Sie können das tun:

cd level2/level2/level2/...

nach Herzenslust und verlassen Sie niemals die level1 Verzeichnis. Dies führt bei einer rekursiven Kopie zu Problemen, da es sich effektiv um eine Endlosschleife handeln würde.

Sie können verwenden cp -rH o cp -rP (unter Solaris 10 und höher, glaube ich), um den Symlinks nicht zu folgen.

Im Einzelnen gibt es drei Flaggen, die Sie interessieren könnten:

  • -H : Wenn der Operand source_file ein symbolischer Link ist, dann kopiert cp die Datei, auf die der symbolische Link für den Operanden source_file verweist. Alle anderen symbolischen Links, die während der Durchquerung einer Dateihierarchie angetroffen werden, bleiben erhalten. Das heißt, wenn die Datei bzw. das Verzeichnis, das Sie als Quelle angeben, ein Link ist, wird auch das Ziel dieses Links kopiert. Alle symbolischen Links unterhalb dieser Quelle werden nicht verfolgt.

  • -L : Kopiert Dateien, die durch symbolische Links referenziert werden. Symbolische Links, die bei der Durchquerung einer Dateihierarchie gefunden werden, bleiben nicht erhalten. Dies folgt allen symbolischen Links unter der Quelle.

  • -P : Kopiert symbolische Links. Symbolische Links, die bei der Durchquerung einer Dateihierarchie auftreten, bleiben erhalten. Ich denke, dies ist identisch mit -H sondern behält auch den symbolischen Link für die spezifische Quelle bei.

-2voto

ghostdog74 Punkte 305138

Versuchen Sie es mit cp Befehl wie unten beschrieben:

cp -rH

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X