Gibt es einen Unterschied zwischen Hardlinking mit cp -l oder ln?

15

Ich implementiere ein Backup-Schema mit Rsync und Hardlinks. Ich weiß, dass ich link-dest mit rsync verwenden kann, um die Hardlinks zu erstellen, aber ich habe die Erwähnung von "cp -l" gesehen, bevor "link-dest" in rsync implementiert wurde. Eine andere mir bekannte Hardlink-Methode ist "ln".

Meine Frage ist also aus Neugier: Gibt es einen Unterschied zwischen der Verwendung von "cp -l" und der Verwendung von "ln" bei Hardlinks?

twan163
quelle
Die Links sind nicht zu unterscheiden.
rici
Du willst damit sagen, dass es keinen Unterschied gibt? Sie könnten austauschbar verwendet werden?
Twan163
Ich habe selbst einen kleinen Test gemacht, konnte aber auf den ersten Blick keinen Unterschied zwischen den beiden feststellen.
Twan163
cp: illegal option -- lSind Sie sicher, dass cp eine l-Option hat?
Tom

Antworten:

16

Das Ergebnis von beiden muss dasselbe sein, da ein fester Link zur Originaldatei erstellt wird.

Der Unterschied liegt in der beabsichtigten Verwendung und daher in den für jeden Befehl verfügbaren Optionen. Zum Beispiel cpkann Rekursion während verwenden lnkann nicht:

cp -lr <src> <target>

erstellt feste Links <target>zu allen Dateien in <src>. (Es werden neue Verzeichnisse erstellt, keine Links.) Das Ergebnis ist, dass die Verzeichnisbaumstruktur unter <target>identisch mit der unter aussieht <src>. Es wird sich dadurch unterscheiden, cp -r <src> <target>dass die Verwendung der letzteren Dateien und Ordner kopiert und jedem einen neuen gibt, inodewohingegen die erstere nur feste Links für Dateien verwendet und daher einfach deren LinksAnzahl erhöht .

Wenn Sie wie in Ihrem Beispiel eine einzelne Datei kopieren, sind die Ergebnisse identisch.

garethTheRed
quelle
Wenn ich das richtig verstehe, erstellt "cp -lr" Hardlinks für alle Dateien. Wenn jedoch Verzeichnisse in <target> fehlen, werden diese als neu erstellt (dh es werden keine Hardlinks zu Verzeichnissen in <target> erstellt).
Twan163
Ja das ist richtig. Sie können keine festen Links zu Verzeichnissen erstellen. Um die Datei- / Verzeichnisstruktur beizubehalten, werden Dateien in "echten" Verzeichnissen daher zu festen Verknüpfungen.
garethTheRed
zum verhalten von "cp -lr": hardlinks für dateien ... neue verzeichnisse für verzeichnisse. scheint ein wenig seltsam, aber ich denke, dieses "seltsame" Verhalten ist ein Nebeneffekt der Einschränkungen (kann keine Hardlinks von Verzeichnissen haben). ||| Außerdem finden Sie hier einige Links zu Informationen über Hardlinks, die für Regisseure nicht zulässig sind ( ref1 von askubuntu und ref2 von unix.stackexchange) .
Trevor Boyd Smith
2

link verwendet die wenigsten Systemaufrufe, gefolgt von ln und schließlich cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
Steven Penny
quelle