Je comprends pourquoi presque toutes les versions d'Unix n'autorisent pas la liaison physique des répertoires (en fait, HFS + sur OS X est le seul que je connaisse, mais même cela n'est pas facile à faire soi-même). Cependant, tous les systèmes de fichiers prennent en théorie en charge les répertoires liés en dur, car tous les répertoires contiennent au moins un lien physique supplémentaire vers eux-mêmes, ainsi que des liens physiques supplémentaires dans les sous-répertoires pointant vers leur parent.
Maintenant, je me rends compte que le hard-linking peut être dangereux s'il est mal utilisé, car il peut créer des structures cycliques que peu de programmes vérifieront, et ainsi se retrouver coincé dans une boucle infinie. Cependant, j'espérais utiliser des liens physiques pour créer une sauvegarde de style Time Machine pouvant fonctionner pour n'importe quel Unix. Je ne pense pas que ce type de structure soit dangereux, car les liens pointent simplement vers des sauvegardes précédentes ; il ne devrait y avoir aucun risque de lien cyclique. Dans mon cas, j'utilise actuellement rsync pour créer des liens physiques vers des fichiers existants, mais c'est lent et inutile, en particulier avec de très grandes sauvegardes et surtout si je sais déjà quels répertoires sont inchangés.
Dans cet esprit, existe-t-il un moyen de forcer la création de liens physiques vers les répertoires sur les variantes Unix ? ln
n'est vraisemblablement pas bon car c'est l'endroit où de nombreuses saveurs Unix mettent leurs restrictions afin d'empêcher les répertoires de liaison en dur, et ln
les versions qui prennent en charge les répertoires liés en dur indiquent spécifiquement que l'opération est susceptible d'échouer. Mais pour quelqu'un qui connaît les risques et sait que son cas d'utilisation est sûr, existe-t-il un moyen de créer le lien de toute façon ? Idéalement pour un script shell, mais si j'ai besoin de compiler un petit programme pour le faire, je suppose que je pourrais.
Réponse acceptée :
Ne faites pas ça. Si vous souhaitez avoir un système de sauvegarde utilisant des liens physiques pour économiser de l'espace, mieux vaut utiliser rsync avec --link-dest
, qui établira un lien dur avec les fichiers de manière appropriée pour économiser de l'espace, sans causer les problèmes que cela entraîne (c'est-à-dire que la liaison physique entre les répertoires est une corruption du système de fichiers et l'amènera à signaler un nombre incorrect d'inodes + échouer fsck + a généralement une sémantique inconnue car il n'est pas un DAG ).