APFS: Verzeichnisse im Terminal clonen

Lasse ich gelten. :p
 
Er ist hart, aber nicht ungerecht…
 
Und warum weist man dann darauf hin, wenn sie hier doch nichts nützen? (Betrifft nicht dich, sondern den dadurch überflüssigen Beitrag von "mj".)
Na ja, so allzu oft weicht Apple ja nicht ab bzw. ergänzt Funktionen oder Features.
Solche Hinweise sind also schon sinnvoll - auch wenn er in diesem Fall halt mal nicht passte.
 
Du bringst hier einiges Durcheinander.
Nein. Hier reden wir aneinander vorbei.

Wie TimeMachine sein Backup auf der Backup-Platte organisiert, ist mir hier egal. Ich meinte die lokalen Snapshots, die TimeMachine auf der lokalen mit APFS formatierten Platte anlegt. Diese sind keine Hardlinks - die gehen nämlich nicht für Verzeichnisse - sondern nutzen das APFS-Feature zum Clonen.

Solche Hinweise sind also schon sinnvoll
Eine dahingeschmissene Empfehlung 'man cp' halte ich für völlig wertlos, solange nicht wenigstens auf die passende Stelle in der Man-Page hingewiesen wird. Sonst macht man damit nur die Diskussion kaputt.
 
Doch, ich glaube vidman hat recht: du bringst zwei unterschiedliche APFS-Funktionalitäten durcheinander. Snapshots und copy-on-write sind nicht dasselbe.

Ich hab die FS-Doku jetzt nicht vollständig durchgelesen (wie auch, es gibt schließlich noch immer keine :rolleyes:) aber ich bin mir trotzdem ziemlich sicher, dass die lokalen Snapshots anders funktionieren als das Klonen. Schließlich sind das zwei völlig unterschiedliche Vorgänge: beim Klonen legst du eine Kopie eines Inhalts an, oder im APFS-Fall bei copy-on-write zunächst eine neue inode mit identischem Ziel. Beim Snapshot frierst du hingegen den status-quo des gesamten Dateisystems ein und schreibst nur das Delta weg. Hier wird nicht auf Dateiebene operiert sondern eine Ebene darunter. Was du vorhast ist eine Mischung aus den beiden, was denke ich nicht vorgesehen ist. clonefile macht copy-on-write Kopien von Dateien, Verzeichnisse müssen jedoch neu angelegt werden da sie nicht geklont werden können. Aus der BSD manpage von clonefile:

The clonefile() function causes the named file src to be cloned to the named file dst. The cloned file dst shares its data blocks with the src file but has its own copy of attributes, extended attributes and ACL's [...]

Ein Verzeichnis hat jedoch keine data blocks als solche sondern ist nur eine organisatorische Information. Du kannst also ein Verzeichnis nicht klonen, da es streng genommen keinen Inhalt hat sondern selbst der Inhalt ist. Traditionell ist die Information darüber, in welchem Verzeichnis eine Datei liegt, in ihrer inode gespeichert die wiederum auf die inode des Verzeichnisses verweist. Du musst somit beim Klonen eines Verzeichnisses mit Unterverzeichnissen zunächst die komplette Struktur neu anlegen und kannst erst danach die Dateien copy-on-write klonen.

So ganz falsch war mein Hinweis auf man cp im Übrigen nicht. Du magst es als hingeschmissen empfinden, ich sehe es als RTFM ;) In Apples Variante der manpage gibt es den Hinweis auf die -c Option (die in der manpage von FreeBSD 11.2 beispielsweise fehlt) die wiederum auf clonefile(2) verweist. Leider fehlt auf den Macs diese manpage wiederum (zumindest auf meinem iMac gibt es kein man 2 clonefile), allerdings lässt sie sich glücklicherweise ergooglen, da die Funktion clonefile ein BSD system call ist: http://www.manpagez.com/man/2/clonefile/ Und hier wird explizit von Dateien gesprochen, nicht von Verzeichnissen.
 
Zuletzt bearbeitet:
@mj zum glück habe ich die seite refreshed. #26 :p

Diese sind keine Hardlinks - die gehen nämlich nicht für Verzeichnisse - sondern nutzen das APFS-Feature zum Clonen.
genau das ist ja das problematische an TM, weil dort directory-hardlinks verwendet werden.
und meines wissens immer noch nur auf HFS+-volumes (da geht es um das sicherungsziel).
wenn TM die quelle als APFS vorfindet, kann es einen snapshot anlegen, um den stand der metadaten einzufrieren und für's backup verwenden. das hat aber wiederum mit klonen auf dem ziel nichts zu tun.
Eine dahingeschmissene Empfehlung 'man cp' halte ich für völlig wertlos, solange nicht wenigstens auf die passende Stelle in der Man-Page hingewiesen wird. Sonst macht man damit nur die Diskussion kaputt.
das "man cp" kam ja genau nach meinem "cp -c", was eigentlich als die kurzfassung von: "schau in's cp-handbuch nach -c" zu verstehen gewesen wäre.

die diskussion läuft hier doch bisher besser, als in vielen anderen threads.

ergänzend zu #26, solltest du vielleicht kurz darlegen, was du unter snapshots und copy-on-write bzw. redirect-on-write verstehst. dann kann man sich besser drauf einstellen.
 
  • Gefällt mir
Reaktionen: mj und dg2rbf
Stimmt, du hast recht. Ich muss mich vorhin vertippt haben weil er nichts gefunden hat. Keine Ahnung was da los war, ich denke mal Layer 8 :noplan:
 
Zurück
Oben Unten