GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak vytvořit Cron Job, která automaticky odstraní soubory, které jsou starší než 30 dní?

Používám desktop Ubuntu 14. Tento stroj používám k zálohování jiných strojů a jako FTP server pro bezpečnostní kamery.

Potřebuji vytvořit úlohu cron, která automaticky odstraní soubory starší než 30 dní. Trochu jsem hledal a myslím, že jsem našel správný příkaz, ale před jeho provedením se chci ujistit, že mi něco nechybí.

* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete

Musím před příkaz find vložit „sudo“?

Musím dát „+“ před počet dní „29“?

Přijatá odpověď:

Nejprve vložte svůj find ... příkaz v bash skript a zavolejte tento skript z vašeho crontab . Pokud máte zašifrovaný domovský adresář (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt ) budete muset skript uložit mimo svůj $HOME adresářový strom. Uchování příkazu v crontab ztěžuje konfiguraci, protokolování a ladění a crontab parser příkazů není tak chytrý jako bash ‘s.

Za druhé, vždy, Vždy, VŽDY test find pomocí -print , a zprovozněte jej, než zvážíte -delete .

Za třetí, find test “-mtime 29 ” říká find „Najděte mtime souboru a vrátí True pokud se rovná 29 . Měli byste použít -mtime +29 , které find vidí jako „more than 29 “, což je to, co chcete. Z man find :

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

Za čtvrté, ujistěte se, že máte přístup pro zápis do adresářů v /home/USER/DIRECTORY1/DIRECTORY2/ .

Za páté, máte na mysli /home/USER/DIRECTORY1/DIRECTORY2/ nebo /home/$USER/DIRECTORY1/DIRECTORY2/ ? Pokud $USER je pro uživatelské ID uživatele, máte problém:cron nedefinuje $USER v běhovém prostředí. Definuje $HOME , takže můžete použít $HOME/DIRECTORY1/DIRECTORY2 .


Ubuntu
  1. Jak nastavit cron pro každodenní zálohování databáze MySQL a odstranění starších souborů záloh, které jsou starší než 10 dní?

  2. Jak odstranit soubory, které jsou starší než n dní BEZ použití příkazu find

  3. Jak vytvořit tar pro soubory starší než 7 dní pomocí skriptování linuxového shellu

  1. Jak v Linuxu odstraníte soubory starší než konkrétní datum?

  2. Jak najdu všechny soubory, do kterých *nemožno* skupinově zapisovat?

  3. Jak použít příkaz find k odstranění souborů odpovídajících vzoru?

  1. Hledání souborů v příkazovém řádku (jak na to)

  2. Smazat všechny soubory a složky v /tmp starší než jeden den?

  3. Jak odstranit soubory starší než N dní pomocí tmpreaper v Linuxu