GNU/Linux >> Linux Esercitazione >  >> Linux

Come funziona rm? Cosa fa rm?

La mia comprensione è che i "file" sono effettivamente solo puntatori alla posizione di memoria corrispondente al contenuto dei file.

Stai attento con la tua terminologia. I file (ei puntatori) sono su disco, non in memoria (RAM).

Se 'rm' un file, sicuramente stai eliminando quel puntatore.

Sì. Ciò che accade dipende fortemente dal file system. Alcuni hanno una bitmap di quale blocco è libero/occupato. Quindi dovrebbe capovolgere il bit per ogni blocco liberato. Altri filesystem utilizzano metodi più sofisticati per tenere traccia dello spazio libero.

il che suggerisce che nulla viene effettivamente sovrascritto...

Corretta. Puoi trovare varie utilità "undelete". Ma a seconda del filesystem, può diventare piuttosto complesso. Ma le cose che hai salvato anni fa potrebbero essere ancora in giro o potrebbero essere sovrascritte. Tutto dipende dai minimi dettagli. Ad esempio, vedi e2fsprogs.

Quindi, cancellare il puntatore a un indirizzo di memoria è l'unica cosa che fa rm?

Bene, deve anche rimuovere la "voce della directory" che fornisce i metadati sul file. (A volte cancella solo il primo byte del nome del file).

I dati sono ancora lì in un blocco contiguo come prima?

Sì, i dati sono ancora lì. Ma non dare per scontato che sia un blocco contiguo. I file possono essere frammentati in tutto il disco, con molti puntatori che gli dicono come riassemblare. E se stai usando RAID, le cose si fanno davvero complesse.


Sì. rm cancella semplicemente il puntatore. Se hai più puntatori al file (collegamenti reali), elimina uno di quei puntatori con rm lascia gli altri completamente intatti e i dati sono ancora disponibili.

L'eliminazione di tutti quei collegamenti continua a non toccare i dati, tuttavia il sistema operativo è ora libero di riutilizzare i blocchi che in precedenza erano riservati per l'archiviazione di tali dati.

Vale la pena notare che qualsiasi processo che apre un file crea un handle di file per esso. Ciò si aggiunge al conteggio complessivo dei riferimenti al file. Se elimini tutti i puntatori dal tuo filesystem, ma il sistema operativo ha ancora un processo in esecuzione con un handle di file aperto per il tuo file, il conteggio dei puntatori non sarà zero e il file non verrà effettivamente eliminato. Solo quando il puntatore finale viene chiuso, il filesystem registrerà lo spazio su disco come rilasciato e solo a quel punto il sistema operativo sarà libero di sovrascrivere i blocchi precedentemente riservati per l'archiviazione di quei dati.

Potresti o meno essere in grado di recuperare quei dati in qualsiasi momento in futuro, a seconda che si sia verificato o meno un riutilizzo dei blocchi in questione.

Per inciso, non hai alcuna garanzia che i tuoi dati si trovino lì in un blocco contiguo in primo luogo.


Linux
  1. Che cos'è un Makefile e come funziona?

  2. Che cos'è un server Web e come funziona un server Web?

  3. Come funziona Awk '!a[$0]++'?

  4. Ssh – Come funziona Tcp-keepalive in Ssh?

  5. Cos'è il DNS e come funziona?

Comando file Linux:cosa fa e come usarlo

Cos'è Docker? Come funziona?

Che cos'è il comando sorgente in Linux e come funziona?

Come funziona la memoria di scambio in Linux?

Come funziona un sistema di bilanciamento del carico? Che cos'è il bilanciamento del carico?

Come funziona /proc/*?