GNU/Linux >> Znalost Linux >  >> Linux

Jak rm funguje? Co dělá rm?

Chápu to tak, že 'soubory' jsou ve skutečnosti jen ukazatele na umístění paměti odpovídající obsahu souborů.

Buďte opatrní se svou terminologií. Soubory (a ukazatele) jsou na disku, nikoli v paměti (RAM).

Pokud 'rm' soubor, určitě musíte mazat tento ukazatel.

Ano. Co se stane, je silně závislé na souborovém systému. Některé mají bitmapu, které bloky jsou volné/obsazené. Muselo by se tedy otočit bit pro každý uvolněný blok. Jiné souborové systémy používají sofistikovanější metody sledování volného místa.

což naznačuje, že se ve skutečnosti nic nepřepisuje...

Opravit. Můžete najít různé "obnovení" utility. Ale v závislosti na souborovém systému to může být poměrně složité. Ale věci, které jste si uložili před lety, mohou stále sedět - nebo mohou být přepsány. Vše závisí na nepatrných detailech. Viz například e2fsprogs.

Je tedy odstranění ukazatele na adresu paměti jedinou věcí, kterou rm dělá?

Musí také odstranit "položku adresáře", která poskytuje metadata o souboru. (Někdy prostě vymaže první bajt názvu souboru).

Jsou data stále umístěna v souvislém bloku jako předtím?

Ano, data tam stále jsou. Ale nepředpokládejte, že jde o souvislý blok. Soubory lze fragmentovat po celém disku se spoustou ukazatelů, které říkají, jak je znovu sestavit. A pokud používáte RAID, věci jsou opravdu složité.


Ano. rm jednoduše smaže ukazatel. Pokud máte více ukazatelů na soubor (pevné odkazy), pak smažte jeden z těchto ukazatelů pomocí rm ponechává ostatní zcela nedotčené a data jsou stále dostupná.

Smazání všech těchto odkazů se stále nedotkne dat, ale operační systém nyní může znovu použít bloky, které byly dříve vyhrazeny pro ukládání těchto dat.

Stojí za zmínku, že každý proces, který otevře soubor, pro něj vytvoří popisovač souboru. To zvyšuje celkový počet odkazů na soubor. Pokud odstraníte všechny ukazatele ze svého souborového systému, ale v operačním systému stále běží proces s otevřeným popisovačem souboru pro váš soubor, pak počet ukazatelů nebude nulový a soubor nebude ve skutečnosti odstraněn. Teprve když je tento poslední ukazatel zavřený, souborový systém zaregistruje místo na disku jako uvolněné a pouze v tomto okamžiku bude mít OS možnost přepsat bloky dříve vyhrazené pro ukládání těchto dat.

Tato data můžete nebo nemusíte být schopni kdykoli v budoucnu obnovit v závislosti na tom, zda došlo k opětovnému použití příslušných bloků.

Mimochodem, nemáte žádnou záruku, že vaše data jsou umístěna v souvislém bloku na prvním místě.


Linux
  1. Co je Makefile a jak funguje?

  2. Co je NGINX? Jak to funguje?

  3. Co dělá Exec 3?

  1. Co je webový server a jak webový server funguje?

  2. Jak Awk ‚!a[$0]++‘ funguje?

  3. Jak Sticky Bit funguje?

  1. Ssh – Jak funguje Tcp-keepalive v Ssh?

  2. Co je DNS a jak funguje?

  3. Přesouvání souboru, když se používá – jak to funguje?