Portál AbcLinuxu, 13. července 2025 06:06


Dotaz: Jak smazat poslední nejstarší měsíc dat

9.1.2023 09:35 Petr
Jak smazat poslední nejstarší měsíc dat
Přečteno: 302×
Odpovědět | Admin
Ahoj.
Řeším tady takový zajímavý oříšek. Mám celkem 2 webové kamery, které pořizují data (ukládají snímky na lokální disk). Jak zařídit, aby se nejstarší data automaticky odmazávala ? Co jsem hledal, tak jsem našel zpravidla příklady pro "odmaž starší XY dnů", ale já vlastně sám nevím, kdy to místo dojde. Ale pakliže místo dojde (nebo bude docházet), tak chci odmazat jen ta opravdu "nejstarší data".

No, přiznám se, že úplně nevím, kudy do toho.

Nějaký nápad, tip ?

Díky,
Petr
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.1.2023 10:13 Zopper | skóre: 15
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžeš dostatečně často (podle rychlosti zaplňování úložiště, třeba jednou denně) pouštět v cronu skript, který zkontroluje stav úložiště, a v případě překročení nějakého prahu (třeba 90 %) začne mazat od nejstaršího, dokud se nedostane pod nějakou jinou prahovou hodnotu (třeba 60 %). Tím pádem ti bude zaplněnost oscilovat mezi 60-90 %.
"Dlouho ještě chcete soudit proti právu, stranit svévolníkům?" Ž 82,2
9.1.2023 10:22 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak sa to nedá naklikať v tom kamerovom softwéry čo nahráva dáta z kamier, tak by som odporučil za domácu úlohu našrudovať napríklad manuál programu find (parametre -delete a -ctime). Nespĺňa to kompletné zadanie z jedného reálneho dôvodu (parameter je v dňoch, a mesiace majú 28 až 31 dní) a z druhého pravdepodobného dôvodu (môžeš mať úložisko na DS ktorý nepodporuje atribút Creation Time ale len Modify Time).
9.1.2023 11:15 Petr
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nejedná se o kamerový software. Fotky si z IP kamer stahuju přes cron pomocí wget na ext4 oblast.
AraxoN avatar 9.1.2023 11:39 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nájdenie najstaršieho súboru:
ls -t $DIR | tail -n 1
Nájdenie 10-teho najstaršieho súboru:
ls -t $DIR | tail -n 10 | head -n 1
Nájdenie súborov starších než daný súbor:
find $DIR -maxdepth 1 -type f -not -newer $SUBOR
Zmazanie nájdených súborov:
find ... -delete
Max avatar 9.1.2023 11:43 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ty nepoužíváš žádný CCTV systém? Tj. řešíš nějaké hloupé posílání dat na sdílený disk/ftp?
Pokud tomu tak je, řešil bych to scriptem, který by se cronem spouštěl v intervalech. První, co by udělal, by byla kontrola volného místa na disku. Je to rychlá nenáročná operace. Pokud by bylo volného místa pod nějakou mez, smazal bych posledních x nejstarších souborů. Asi nějak takto (smaž 20 nejstarších souborů, pokud je volného místa méně, jak 10GB):
#!/bin/bash

# adresář s cam záznamy
ADRESAR=/mnt/datastore

# zjistit volné místo v KiB
VOLNEKB=`df ${ADRESAR} | awk '{print $4}' | tail -1`

# minimálně volných 10GiB
MINVOLNEKB=1048576000

# kontrola a následné smazání
if [ "${VOLNEKB}" -lt "${MINVOLNEKB}" ]; then
  echo -e "Malo místa, mažu starší záznamy...\n"
  ls -t ${ADRESAR} | head -n 20 | xargs rm -f
fi
Záleží na tobě, jakou máš strukturu dat, zda tam máš jen soubory, nebo i podadresáře (to by pak bylo třeba použít find) atd.
Zdar Max
Měl jsem sen ... :(
Max avatar 9.1.2023 11:48 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Ještě dodám, že místo "if" by byl možná vhodnější cykl while. Tj. že by mazal opakovaně a tak dlouho, doku by požadovaného volného místa nebylo dost. Nicméně pokud znáš přírůstky a víš, že to nikdy nevysaturuješ, jde to udělat i s "if". Nevýhodou while by pak bylo, že kdyby ti došlo místo na disku vlivem něčeho jiného, mohl by jsi tímto způsobem přijít rychle o celý archiv. Je to vždy k zamyšlení a sám si to musíš rozhodnout / navrhnout pro svojí konkrétní potřebu.
Zdar Max
Měl jsem sen ... :(
9.1.2023 11:49 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Jak smazat poslední nejstarší měsíc dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
~$ find tam_kde_mas_ty_soubory/ -type f -exec stat -c "%Y %n" '{}' \; | sort -n | head -10

To ti vypíše 10 nejstarších souborů. Přesněji řečeno souborů, jejichž změna je nejvíc v minulosti. Ale bacha na jednu věc. Některé sobubory mohou mít blbě nastavený čas poslední změny. Uvedu příklad:

user@stroj:~$ stat Dokumenty/zaloha_mobilu/record20160308074613.3gpp
  Soubor: Dokumenty/zaloha_mobilu/record20160308074613.3gpp
Velikost: 151299        Bloků: 296        I/O blok: 4096   běžný soubor
Zařízení: 0,26  I-uzel: 18521993    Odkazů: 1
   Práva: (0644/-rw-r--r--)  UID: ( 1001/    user)   GID: ( 1001/    user)
     Přístup: 2022-04-10 20:05:15.535705023 +0200
Změna obsahu: 0000-12-31 00:57:44.000000000 +0057
Změna i-uzlu: 2016-06-16 20:27:14.325377539 +0200
       Vznik: 2016-06-16 20:27:14.321377272 +0200

Jak vidno z jeho názvu, byl vytvořen 8.3. 2016 v 07:46:13 a odzálohován 16.6.2016. Ovšem čas změny obsahu je 31.12. roku 0, což je evidentně blbě. Inu iMacwear M7, první hodinky s Androidem se kterými šlo telefonovat dostupné za rozumnou cenu, holt měly své mouchy.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.