GNU/Linux >> Znalost Linux >  >> Linux

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

Záznam adresáře je pouze ukazatelem na inode. Inode obsahuje metainformace o souboru (jiné než název) a ukazatele na data souboru (pokud existují). Když začnete kopírovat soubor, získáte popisovač k inode.

Operační systém udržuje počet odkazů na inode. Dokud existují odkazy na inode, jsou inode a data souboru zachována. Jakmile jsou všechny odkazy na inode odstraněny, inode je a prostor požadovaný souborem je uvolněn.

Protože máte soubor otevřený pro kopírování, bude uchován, dokud váš proces soubor nezavře. K tomu by mělo dojít po dokončení přenosu souboru a stane se tak, pokud proces kopírování selže. Pokud se přenos souboru částečně nezdaří a vy jste smazali všechny pevné odkazy na soubor, nebude možné přenos úspěšně restartovat.

EDIT:Jak již poznamenali ostatní, přesuny souborů na stejném zařízení se provádějí bez přesunutí dat. Místo toho je v cílovém adresáři vytvořen nový záznam adresáře a původní záznam adresáře je odstraněn.

Je možné mít více položek adresáře pro stejný soubor. Tyto odkazy se nazývají pevné odkazy. Jsou vytvořeny vytvořením nové položky adresáře pro soubor bez odstranění původní položky. Inode souborového systému má počet referencí pro záznam počtu položek adresáře ukazujících na soubor.

EDIT2:Pokud proces selže nebo je zabit, soubor bude čistě odstraněn, protože počet přístupů do paměti se sníží na nulu. Toto je akce, která nastane, když se program normálně ukončí.

V případě výpadku napájení nebo jiného neuspořádaného vypnutí systému bude disk potřebovat fsck (kontrola systému souborů), než bude možné jej plně připojit. V závislosti na stavu inode na disku a adresářových strukturách bude místo obnoveno, soubor zůstane v adresáři nebo bude vytvořen nový záznam v lost+found adresář. Výsledky budou záviset na tom, které změny byly vyprázdněny na disk nebo zapsány do žurnálu souborových systémů.


Jak vysvětlil Matt Jenkins, OS (souborový systém) sleduje soubory, které jsou aplikacemi udržovány otevřené. Dokud proces nechává soubor otevřený, jeho data zůstávají na disku (i když byla smazána a již nejsou viditelná ani přístupná jiným programům.

Všimněte si, že důsledkem toho je, že prostor obsazený souborem lze získat zpět až poté, co jej uzavřel poslední proces, který jej používal. To je FAQ pro operace se souborovým systémem Linux/Unix:„příkaz 'df' říká, že oddíl je plný, zatímco 'du' hlásí volné místo“ (viz např. http://batleth.sapienti-sat.org/projects/FAQs/ext3- faq.html). Pokud potřebujete uvolnit místo, nestačí mazat velké soubory (např. soubory protokolů), musíte se také ujistit, že je žádný proces nenechává otevřené (obvykle problém se soubory protokolů).


Je to vlastně docela jednoduché. Soubor udržuje seznam odkazů - procesů, které k souboru přistupují. Když smažete soubor, odstraní se pouze výpis z adresáře, ale ne samotný soubor. Programy, které mají soubor stále otevřený, k němu mají stále přístup. Soubor je skutečně odstraněn, pouze když jej všechny programy, které k němu přistupují, zavřou.

Také při přesunu souboru – pokud je v rámci stejného souborového systému – se soubor ve skutečnosti nepřesouvá jako takový, pouze se změní ukazatel na adresář, ve kterém se soubor nachází.


Linux
  1. UNIX / Linux:Jak používat Sticky Bit na adresář a soubor

  2. Jak rm funguje? Co dělá rm?

  3. Jak vlastně sig_atomic_t funguje?

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

  2. Jak Sticky Bit funguje?

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

  1. Co je NGINX? Jak to funguje?

  2. Jak používat typ souboru ve Vimu?

  3. Jak funguje debugger v Linuxu?