GNU/Linux >> Linux Esercitazione >  >> Linux

Creare forzatamente una directory hard link?

Capisco il motivo per cui quasi tutte le versioni di Unix non consentono il collegamento fisico delle directory (in effetti HFS + su OS X è l'unico che conosco, ma anche questo non è facile da fare da solo). Tuttavia, tutti i file system in teoria supportano le directory con collegamenti fisici, poiché tutte le directory contengono almeno un collegamento reale aggiuntivo a se stesse, oltre a collegamenti reali aggiuntivi nelle sottodirectory che puntano al loro genitore.

Ora, mi rendo conto che l'hard-linking può essere pericoloso se utilizzato in modo improprio, poiché può creare strutture cicliche che pochi programmi verificheranno e quindi rimanere bloccate in un ciclo infinito. Tuttavia, speravo di utilizzare i collegamenti fisici per creare un backup in stile Time Machine che potesse funzionare per qualsiasi Unix. Non credo che questo tipo di struttura sarebbe pericoloso, poiché i collegamenti puntano semplicemente a backup precedenti; non dovrebbero esserci rischi di collegamento ciclico. Nel mio caso al momento sto usando rsync per creare collegamenti reali a file esistenti, ma questo è lento e dispendioso, in particolare con backup molto grandi e soprattutto se so già quali directory sono invariate.

Con questo in mente, c'è un modo per forzare la creazione di collegamenti fisici di directory su varianti unix? ln presumibilmente non va bene in quanto questo è il luogo in cui molte versioni unix mettono le loro restrizioni per impedire il collegamento fisico di directory e ln le versioni che supportano le directory con collegamento fisso affermano specificamente che è probabile che l'operazione non riesca. Ma per qualcuno che conosce i rischi e sa che il proprio caso d'uso è sicuro, c'è comunque un modo per creare effettivamente il collegamento? Idealmente per uno script di shell, ma se ho bisogno di compilare un piccolo programma per farlo, suppongo che potrei farlo.

Risposta accettata:

Non farlo. Se vuoi avere un sistema di backup che utilizzi hard link per risparmiare spazio, meglio usare rsync con --link-dest , che collegherà fisicamente file in modo appropriato per risparmiare spazio, senza causare i problemi che ciò provoca (ovvero, l'hard linking tra le directory è un danneggiamento del filesystem e farà sì che riporti conteggi di inode errati + fail fsck + generalmente hanno una semantica sconosciuta perché non è un DAG ).


Linux
  1. Come creare collegamenti soft e hard in Linux

  2. Crea un collegamento simbolico della directory in Ubuntu

  3. Come creare un collegamento a una directory

  4. Crea una directory in vifm

  5. Come creare comandi personalizzati in Unix/Linux?

Crea e configura le directory setgid per la collaborazione – Preparazione dell'obiettivo RHCSA

Come creare directory in Linux (comando mkdir)

Crea collegamenti alle directory utilizzate di frequente in Linux

Il comando ln in Linux:crea collegamenti soft e hard

Crea un nuovo albero di directory vuoto dall'albero esistente con i file

creare home directory dopo aver creato gli utenti