GNU/Linux >> Znalost Linux >  >> Linux

Odstraňte soubory, ke kterým se v Linuxu po určitou dobu nepřistupovalo

Již jsme probrali, jak ručně najít a odstranit soubory starší než X dní pomocí příkazu „najít“ v Linuxu . Dnes uděláme totéž, ale pouze v případě, že soubory nebyly po určitou dobu zpřístupněny. Pozdravte "Tmpwatch" , nástroj příkazového řádku pro rekurzivní mazání souborů, které nebyly po určitou dobu zpřístupněny. Nejen soubory, tmpwatch také odstraní prázdné adresáře.

Ve výchozím nastavení Tmpwatch rozhodne, které soubory/adresáře mají být smazány, na základě jejich atime (doba přístupu). Toto chování můžete samozřejmě změnit pomocí ctime (čas změny inodu), mtime (doba modifikace) také hodnoty. Normálně lze Tmpwatch použít k odstranění obsahu /tmp adresář a další nepoužívané a nechtěné položky, jako jsou staré soubory protokolu.

Důležité upozornění!!

Než začnete tento nástroj používat, musíte vědět, že Tmpwatch bude mazat soubory a adresáře rekurzivně na základě daných kritérií. Nespouštějte tmpwatch v / (kořenový adresář) . Tento adresář obsahuje důležité soubory, které jsou nutné k udržení chodu systému Linux. Pokud nejste dostatečně opatrní, tmpwatch smaže důležité systémové soubory a adresáře, které odpovídají daným kritériím v celém kořenovém adresáři. Nástroj Tmpwatch neobsahuje žádný ochranný mechanismus, který by vám bránil spouštět jej v kořenovém adresáři. Takže neexistuje způsob, jak operaci vrátit zpět. Byli jste varováni!

Nainstalujte Tmpwatch na Linux

Tmpwatch je k dispozici ve výchozích úložištích většiny distribucí Linuxu.

Na Fedoře, CentOS, RHEL, AlmaLinux a Rocky Linux jej můžete nainstalovat pomocí příkazu:

$ sudo dnf install tmpwatch

Na openSUSE:

$ sudo zypper install tmpwatch

Na Debianu a jeho derivátech, jako je Ubuntu, jsou Tmpwatch dostupné pod jiným názvem, např. Tmpreaper . Tmpreaper je většinou založen na `tmpwatch-1.2/1.4' od Erika Troana z Redhatu. Nyní tmpreaper pro Debian spravuje Paul Slootman .

Chcete-li nainstalovat tmpreaper na Debian, Ubuntu, Linux Mint, spusťte:

$ sudo apt install tmpreaper

Chcete-li jej spustit, spusťte:

$ tmpreaper <options>

Nebo zadejte úplnou cestu:

$ /usr/sbin/tmpreaper <options>

Smažte soubory, ke kterým se po určitou dobu nepřistupovalo pomocí Tmpwatch / Tmpreaper

Použití Tmpwatch a Tmpreaper je téměř stejné. Pokud používáte systémy založené na Debianu, nahraďte v následujících příkladech "Tmpwatch" za "Tmpreaper".

Smažte soubory, ke kterým není přístup déle než X dní

Chcete-li odstranit soubory starší než 10 dní, spusťte:

tmpwatch 10d /var/log/

Výše uvedený příkaz smaže všechny soubory a prázdné adresáře, ke kterým nebylo přistupováno déle než 10 dní z /var/log/ složka.

Smažte soubory, které nebyly změněny déle než X dní

Jak jsem již řekl, Tmpwatch odstraní soubory na základě jejich doby přístupu. Pomocí -m můžete také smazat soubory na základě jejich času úpravy (mtime). možnost.

Například následující příkaz vymaže soubory, které nebyly změněny po dobu 10 dnů v /var/log/ složka.

tmpwatch -m 10d /var/log/

Zde -m odkazuje na čas úpravy a d je parametr. Parametr definuje věkovou hranici pro odstranění souborů. K odstranění souborů můžete použít následující parametry time_spec.

  • d - několik dní,
  • h - celé hodiny,
  • m - na minuty,
  • s - na několik sekund.

Otevírací doba je výchozí.

Chcete-li například odstranit soubory, které nebyly změněny za posledních 10 hodin , jednoduše spusťte:

tmpwatch -m 10 /var/log/

Jak jste si možná všimli, ve výše uvedeném příkazu jsem nepoužil parametr time_spec. Protože, h (for hours) je výchozí parametr, takže jej nemusíme zmiňovat při mazání souborů, které nebyly změněny za posledních X hodin.

Smazat symbolické odkazy

Pokud chcete odstranit symbolické odkazy, nejen běžné soubory a adresáře, použijte -s možnost jako níže.

tmpwatch -s 10 /var/log/

Smazat všechny soubory

Chcete-li odstranit všechny typy souborů, nejen běžné soubory, symbolické odkazy a adresáře, použijte -a možnost.

tmpwatch -a 10 /var/log/

Výše uvedený příkaz odstraní všechny typy souborů včetně běžných souborů, symbolických odkazů a adresářů v /var/log/ složka.

Vyloučit adresáře z mazání

Někdy možná budete chtít odstranit soubory, ale ne adresáře. pokud ano, příkaz by byl:

tmpwatch -am 10 --nodirs /var/log/

Výše uvedený příkaz smaže všechny soubory kromě adresářů, které nebyly změněny za posledních 10 hodin.

Proveďte testovací běh, aniž byste cokoli smazali

Někdy možná budete chtít vidět, které soubory budou skutečně smazány. To bude užitečné při spuštění Tmpwatch v důležitém adresáři. Pokud ano, spusťte Tmpwatch v testovacím režimu s -t možnost.

tmpwatch -t 30 /var/log/

Ukázkový výstup ze serveru CentOS 7:

removing file /var/log/wtmp
removing directory /var/log/ppp if empty
removing directory /var/log/tuned if empty
removing directory /var/log/anaconda if empty
removing file /var/log/dmesg.old
removing file /var/log/boot.log
removing file /var/log/dnf.librepo.log

Na systémech založených na Debianu uvidíte výstup jako níže.

$ tmpreaper -t 30 /var/log/
(PID 1803) Pretending to clean up directory `/var/log/'.
(PID 1804) Pretending to clean up directory `apache2'.
Pretending to remove file `apache2/error.log'.
Pretending to remove file `apache2/access.log'.
Pretending to remove file `apache2/other_vhosts_access.log'.
(PID 1804) Back from recursing down `apache2'.
(PID 1804) Pretending to clean up directory `dbconfig-common'.
Pretending to remove file `dbconfig-common/dbc.log'.
(PID 1804) Back from recursing down `dbconfig-common'.
(PID 1804) Pretending to clean up directory `dist-upgrade'.
(PID 1804) Back from recursing down `dist-upgrade'.
(PID 1804) Pretending to clean up directory `lxd'.
(PID 1804) Back from recursing down `lxd'.
Pretending to remove file `/var/log//cloud-init.log'.
(PID 1804) Pretending to clean up directory `landscape'.
Pretending to remove file `landscape/sysinfo.log'.
(PID 1804) Back from recursing down `landscape'.
[...]

Operace bude pouze simulována, ale ve skutečnosti se nic nesmaže. Tmpwatch jednoduše provede zkušební provoz a ukáže vám, které soubory budou ve výstupu smazány.

Vynutit smazání souboru

Pokud chcete soubory násilně smazat, použijte -f možnost.

tmpwatch -f 10h /var/log/

Normálně nejsou soubory vlastněné aktuálním uživatelem bez přístupu pro zápis odstraněny. -f volba je také odstraní.

Přeskočit určité soubory z mazání

Tmpreaper má možnost přeskočit soubory z mazání. To bude užitečné, když si chcete ponechat určité typy souborů a smazat vše ostatní. Pokud ano, použijte --protect možnost.

tmpreaper --protect '*.txt' -t 10h /var/log/

Tento příkaz přeskočí všechny soubory, které mají .txt rozšíření z odstranění

Ukázkový výstup:

(PID 2623) Pretending to clean up directory `/var/log/'.
(PID 2624) Pretending to clean up directory `apache2'.
Pretending to remove file `apache2/error.log'.
Pretending to remove file `apache2/access.log'.
Pretending to remove file `apache2/other_vhosts_access.log'.
(PID 2624) Back from recursing down `apache2'.
(PID 2624) Pretending to clean up directory `dbconfig-common'.
Pretending to remove file `dbconfig-common/dbc.log'.
(PID 2624) Back from recursing down `dbconfig-common'.
(PID 2624) Pretending to clean up directory `dist-upgrade'.
(PID 2624) Back from recursing down `dist-upgrade'.
Pretending to remove empty directory `dist-upgrade'.
Entry matching `--protect' pattern skipped. `ostechnix.txt'
(PID 2624) Pretending to clean up directory `lxd'.

Jak můžete vidět, Tmpreaper přeskočí *.txt soubory z odstranění.

Tato možnost není mimochodem dostupná v Tmpwatch.

Nastavení úlohy cron pro pravidelné mazání souborů

Možná nebudete chtít neustále spouštět Tmpwatch/Tmpreaper ručně. V takovém případě můžete nastavit úlohu cron pro automatizaci čistého procesu.

Při instalaci Tmpreaper , vytvoří denní úlohu cron (/etc/cron.daily/tmpreaper ). Tato úloha načte možnosti z /etc/timereaper.conf podat a podle toho jednat. Otevřete soubor a změňte hodnoty podle svých požadavků. Ve výchozím nastavení Tmpreaper odstraní soubory, které jsou o 7 dní starší. Můžete to však změnit úpravou hodnoty "TMPREAPER_TIME=7d" v souboru tmpreaper.conf.

Pokud používáte "Tmpwatch", musíte ručně vytvořit úlohu cron a vložit do ní záznam cron.

# crontab -e

Přidejte následující řádek:

0 1 * * * /usr/sbin/tmpwatch 30d /var/log/

Podle výše uvedené úlohy cron poběží Tmpwatch každý den v 1:00 a odstraní soubory, které jsou o 30 dní starší.

Další podrobnosti o nastavení úloh cron naleznete na následujícím odkazu.

  • Příručka Cron Jobs pro začátečníky

Opět buďte opatrní při používání příkazů Tmpwatch/Tmpreaper . Před spuštěním dvakrát zkontrolujte cestu, abyste předešli ztrátě dat.

Další podrobnosti naleznete na manuálových stránkách.

$ man tmpwatch

Nebo,

$ man tmpreaper

Související čtení:

  • Autotrash – nástroj CLI pro automatické čištění starých souborů v koši
  • Trash-cli :Koš z příkazového řádku pro systémy podobné Unixu
  • Najděte a odstraňte nejstarší soubor, pokud je v adresáři více než X souborů
  • Jak najít a odebrat nepoužívané balíčky v systému Linux
  • Jak vyčistit nevyžádané soubory v Ubuntu pomocí Ubuntu Cleaner

Linux
  1. Najít a odstranit velké soubory, které jsou otevřené, ale byly smazány?

  2. Zkontrolujte konfigurační soubory Linuxu, zda neobsahují chyby syntaxe

  3. Najděte soubory, které jsou dnes (nebo od určité doby) upraveny v Unixu a Linuxu

  1. Jak najít a odstranit soubory starší než určité časové období v Linuxu

  2. Odstraňte pouze soubory v adresáři v adresářích linux NOT

  3. Najděte soubory, které byly změněny za posledních 24 hodin

  1. Linux Odstraňte soubory a adresáře

  2. Je možné, že linuxový deskriptor souboru 0 1 2 není pro stdin, stdout a stderr?

  3. Linux sledovat všechny soubory, ke kterým má proces přístup?