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

Wie funktioniert Rm? Was macht Rm?

Mein Verständnis ist, dass "Dateien" praktisch nur Zeiger auf den Speicherort sind, der dem Dateiinhalt entspricht.

Seien Sie vorsichtig mit Ihrer Terminologie. Die Dateien (und Zeiger) befinden sich auf der Festplatte, nicht im Arbeitsspeicher (RAM).

Wenn Sie eine Datei 'rm', müssen Sie diesen Zeiger auf jeden Fall löschen.

Ja. Was passiert, ist stark vom Dateisystem abhängig. Einige haben eine Bitmap, welche Blöcke frei/belegt sind. Es müsste also das Bit für jeden freigegebenen Block umdrehen. Andere Dateisysteme verwenden ausgefeiltere Methoden zur Verfolgung des freien Speicherplatzes.

was darauf hindeutet, dass tatsächlich nichts überschrieben wird...

Richtig. Sie können verschiedene Dienstprogramme zum "Wiederherstellen" finden. Aber je nach Dateisystem kann es ziemlich komplex werden. Aber Dinge, die Sie vor Jahren gespeichert haben, könnten immer noch herumliegen – oder sie könnten überschrieben werden. Es hängt alles von winzigen Details ab. Siehe zum Beispiel e2fsprogs.

Ist also das Löschen des Zeigers auf eine Speicheradresse das einzige, was rm tut?

Nun, es muss auch den "Verzeichniseintrag" entfernen, der Metadaten über die Datei enthält. (Manchmal wird nur das erste Byte des Dateinamens gelöscht).

Sitzen die Daten immer noch in einem zusammenhängenden Block wie vorher?

Ja, die Daten sind noch da. Aber gehen Sie nicht davon aus, dass es sich um einen zusammenhängenden Block handelt. Dateien können überall auf der Festplatte zerstückelt werden, mit vielen Hinweisen, die ihr sagen, wie sie wieder zusammengesetzt werden sollen. Und wenn Sie RAID verwenden, werden die Dinge richtig komplex.


Ja. rm löscht einfach den Zeiger. Wenn Sie mehrere Zeiger auf die Datei haben (harte Links), dann löschen Sie einen dieser Zeiger mit rm lässt die anderen völlig unangetastet und die Daten weiterhin verfügbar.

Das Löschen all dieser Links berührt die Daten immer noch nicht, aber das Betriebssystem kann jetzt die Blöcke wiederverwenden, die zuvor zum Speichern dieser Daten reserviert waren.

Es ist erwähnenswert, dass jeder Prozess, der eine Datei öffnet, ein Dateihandle dafür erstellt. Dies erhöht die Gesamtzahl der Verweise auf die Datei. Wenn Sie alle Zeiger aus Ihrem Dateisystem löschen, aber das Betriebssystem noch einen Prozess mit einem geöffneten Datei-Handle für Ihre Datei hat, dann ist die Anzahl der Zeiger nicht Null und die Datei wird nicht wirklich gelöscht. Nur wenn dieser letzte Zeiger geschlossen wird, registriert das Dateisystem den Speicherplatz als freigegeben, und nur an diesem Punkt kann das Betriebssystem die zuvor zum Speichern dieser Daten reservierten Blöcke überschreiben.

Je nachdem, ob eine Wiederverwendung der betreffenden Blöcke stattgefunden hat, können Sie diese Daten möglicherweise irgendwann in der Zukunft wiederherstellen oder nicht.

Übrigens haben Sie keine Garantie, dass Ihre Daten dort überhaupt in einem zusammenhängenden Block liegen.


Linux
  1. Was ist ein Makefile und wie funktioniert es?

  2. Was bedeutet Exec 3?

  3. Ssh – Wie funktioniert TCP-Keepalive in Ssh?

  4. Was ist DNS und wie funktioniert es?

  5. Verschieben einer Datei, während sie verwendet wird – Wie funktioniert das?

Linux-Dateibefehl:Was macht er und wie wird er verwendet?

Was ist Docker? Wie funktioniert es?

Was ist Source Command in Linux und wie funktioniert es?

Wie funktioniert Swap-Speicher in Linux?

Wie funktioniert ein Load Balancer? Was ist Load-Balancing?

Wie funktioniert /proc/*?