Portál AbcLinuxu, 10. května 2025 10:08

Dotaz: Automatické mazání souborů shell/cron

16.8.2013 13:08 Tahoma
Automatické mazání souborů shell/cron
Přečteno: 823×
Odpovědět | Admin
Dobrý den, mám script automaticke_mazani.sh volaný cronem každý den ve 4:00 ráno který obsahuje: 

find /var/www/1/ -type f -ctime +1 -name "*.*" -delete
find /var/www/30/ -type f -ctime +30 -name "*.*" -delete
find /var/www/180/ -type f -ctime +180 -name "*.*" -delete
find /var/www/360/ -type f -ctime +360 -name "*.*" -delete


Mělo by to ze složky 1 mazat každý den by mělo smazat soubory starší 1 den.
Mělo by to ze složky 30 mazat každý den by mělo smazat soubory starší 30 dnů.
Mělo by to ze složky 180 mazat každý den by mělo smazat soubory starší 180 dnů.
Mělo by to ze složky 360 mazat každý den by mělo smazat soubory starší 360 dnů.

1. Bude to takhle fungovat?
2. Nevadí, že perioda 360 dnů je moc dlouhá? Mám to testované na max 14 dní.
3. Nebude to moc vytěžovat VPS?
4. Nebude lepší rozdělit ten script na 4? S tím, že jeden by cron zavolal o půlnoci druhý v 1:00 v noci, třetí o hodinu a 4tý zase třeba o hodinu?
5. Co si o tom všem myslíte?

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

Odpovědi

16.8.2013 13:58 NN
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Odpovědět | | Sbalit | Link | Blokovat | Admin
K cemu to vlastne bude dobre ? Treba se to da vyresit i jinak..
16.8.2013 15:15 Tahoma
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Pro automatické mazání souborů ve složce s webem, půl dne jsem se snažil pořešit to srz PHP, ale nepovedlo se mi to.
16.8.2013 16:09 potato
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Proč to děláš, to neřeším.

Pokud je tam těch souborů pár set nebo tisíc, tak to klidně dělej takhle. Je-li ale v ‚360‘ těch souborů 360krát víc, tak by to chtělo inteligentnější přístup.

Nevím, zda víš, že ctime není creation time, ale change time (čas vytvoření se zjistit nedá). Spíš budeš chtít mtime.

No a k "*.*" doufám, že se ti tam budou hromadit soubory bez tečky v názvu...
16.8.2013 16:44 Tahoma
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Super děkuji za hodnotné informace. Souborů se tam bude hromadit když to možná přeženu max pár tisíc. Všechno soubory neco.neco. Pokud bych toto chtěl použít na složku kde by se mělo mazat všechno kromě ".htaccess" a "stahovani.php" dá se tam na to udělat nějaká výjimka?
16.8.2013 17:28 Kit
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Možná by bylo nejlepší, kdyby tam ty dva soubory vůbec nebyly a byly někde úplně jinde.
16.8.2013 17:51 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Výjimka -- ano, viz popis operátorů v manuálové stránce pro find (tady by stačila jednoduše negace -- vykřičník, anebo nePOSIXový '-not'). Ale jména nebo masky souborů je potřeba uvést přímo na příkazové řádce, takže je to rozumně použitelné jen pro přiměřeně malé množství výjimek.
16.8.2013 15:10 okko
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Odpovědět | | Sbalit | Link | Blokovat | Admin
*.* lol
16.8.2013 15:17 Tahoma
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Co se Vám na tom nezdá? Možná stačí : find /var/www/1/ -type f -ctime +1 -name "*" -delete ?

Nebo stačí nebo jen: find /var/www/1/ -type f -ctime +1 -delete ?
16.8.2013 15:55 okko
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
zrajete jak víno!
16.8.2013 16:17 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odhaduji, že -ctime nedělá úplně přesně to, co chceš (viz třeba tu http://en.wikipedia.org/wiki/Mtime#ctime), ale samozřejmě těžko říct, protože "soubor starší než" v otázce je dost neurčitý pojem. Parametr -name v otázce způsobí, že nalezený soubor musí v názvu obsahovat tečku. Předpokládám, že to nebyl záměr a jak už tu padlo, pokud nechceš žádné omezení na název, neuváděj tenhle přepínač vůbec.

Co se zbytku týká, fungovat by to mělo, pokud ten script poběží s dostatečnými právy na zápis do zmíněných adresářů. (A samozřejmě pokud bude správně vyřešeno náhlé zmizení souboru na webu, kde se inkriminované soubory využívají ...) Nerozumím, co by mělo být na 360 dnech moc dlouhé, každopádně pokud chceš něco testovat, můžeš použít místo -ctime -mtime, a testovací soubor(y) si vyrobit pomocí 'touch'.
16.8.2013 16:46 Tahoma
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
No zatím mi to funguje s ctime ať je to klidně changetime. Jelikož datum vytvoření = datum změny, nebo alespoň tak mi to funguje. ;) Ale pro jistotu vysliším vyší radu a dám -mtime, děkuji.
16.8.2013 17:57 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: Automatické mazání souborů shell/cron
Ano, ale pointa je, že mtime je modifikace obsahu souboru a ctime modifikace metadat (včetně samotného mtime), tedy ctime se nastaví na aktuální čas kdykoliv se změní jak obsah souboru, tak jakákoliv jiná metadata (třeba přístupová práva a vlastník), v Linuxu navíc i název souboru. Naopak mtime se mění jen při změně obsahu.

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.