GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Hardlink(s) für Verzeichnisse erzwingen?

Ich verstehe die Begründung, warum fast jede Unix-Version keine feste Verknüpfung von Verzeichnissen zulässt (tatsächlich ist HFS + unter OS X die einzige, die ich kenne, aber selbst das ist nicht einfach, es selbst zu tun). Theoretisch unterstützen jedoch alle Dateisysteme fest verknüpfte Verzeichnisse, da alle Verzeichnisse mindestens einen zusätzlichen festen Link zu sich selbst enthalten, plus zusätzliche feste Links in Unterverzeichnissen, die auf ihr übergeordnetes Verzeichnis verweisen.

Jetzt ist mir klar, dass Hard-Linking gefährlich sein kann, wenn es missbraucht wird, da es zyklische Strukturen schaffen kann, auf die nur wenige Programme prüfen, und so in einer Endlosschleife stecken bleiben. Ich hatte jedoch gehofft, Hardlinks zu verwenden, um ein Backup im Time Machine-Stil zu erstellen, das für jedes Unix funktionieren kann. Ich glaube nicht, dass eine solche Struktur gefährlich wäre, da die Links einfach auf frühere Backups verweisen; eine zyklische Verknüpfung sollte nicht zu befürchten sein. In meinem Fall verwende ich derzeit nur rsync, um feste Links zu vorhandenen Dateien zu erstellen, aber dies ist langsam und verschwenderisch, insbesondere bei sehr großen Backups und insbesondere, wenn ich bereits weiß, welche Verzeichnisse unverändert sind.

Gibt es vor diesem Hintergrund eine Möglichkeit, die Erstellung von Verzeichnis-Hardlinks auf Unix-Varianten zu erzwingen? ln ist vermutlich nicht gut, da dies der Ort ist, an dem viele Unix-Varianten ihre Beschränkungen festlegen, um das Festverknüpfen von Verzeichnissen zu verhindern, und ln Versionen, die fest verknüpfte Verzeichnisse unterstützen, geben ausdrücklich an, dass der Vorgang wahrscheinlich fehlschlagen wird. Aber gibt es für jemanden, der die Risiken kennt und weiß, dass sein Anwendungsfall sicher ist, überhaupt eine Möglichkeit, den Link tatsächlich zu erstellen? Ideal für ein Shell-Skript, aber wenn ich dafür ein kleines Programm kompilieren muss, könnte ich das wohl tun.

Akzeptierte Antwort:

Tun Sie dies nicht. Wenn Sie ein Backup-System haben möchten, das feste Links verwendet, um Platz zu sparen, verwenden Sie besser rsync mit --link-dest , wodurch Dateien fest verlinkt werden um Speicherplatz zu sparen, ohne die Probleme zu verursachen, die dies verursacht (d. h. harte Verknüpfungen zwischen Verzeichnissen sind eine Beschädigung des Dateisystems und führen dazu, dass es falsche Inode-Zählungen meldet + fsck fehlschlägt + im Allgemeinen eine unbekannte Semantik hat, da es kein DAG ist ).


Linux
  1. Erstellen Sie einen symbolischen Link des Verzeichnisses in Ubuntu

  2. Erstellen Sie einen neuen leeren Verzeichnisbaum aus einem vorhandenen Baum mit Dateien

  3. Verzeichnis in vifm erstellen

  4. Erstellen Sie eine weitere Verknüpfung `~~` wie `~` (Home-Verzeichnis)

  5. Warum kann ich keinen festen Link von einer Gerätedatei in einem anderen Verzeichnis als /dev erstellen?

Setgid-Verzeichnisse für die Zusammenarbeit erstellen und konfigurieren – RHCSA Objective Preparation

So erstellen Sie Verzeichnisse unter Linux (mkdir-Befehl)

Erstellen Sie Verknüpfungen zu den häufig verwendeten Verzeichnissen in Linux

Der ln-Befehl unter Linux:Soft- und Hardlinks erstellen

Wie erstelle ich benutzerdefinierte Befehle in Unix/Linux?

Erstellen Sie Home-Verzeichnisse, nachdem Sie Benutzer erstellt haben