Portál AbcLinuxu, 14. května 2024 10:59


Dotaz: skript pro promazavani adresare

28.7.2011 09:53 Marek
skript pro promazavani adresare
Přečteno: 210×
Odpovědět | Admin
Ahojky vsem. Mam adresar /DATA, kam se generuji denne data. A ja bych potreboval skriptik, ktery mi tarem zabali (do /DATA_back) A SMAZE (jen po uspesnem zabaleni) data starsi 2 dnu (ty aktualni 2 dny ponecha). Je to hodne slozite? Ve skriptikach jsem jeste amater:-)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.7.2011 10:16 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
Odpovědět | | Sbalit | Link | Blokovat | Admin
V /DATA su len subory alebo aj hlbsie adresarove struktury ?
Guardian avatar 28.7.2011 10:18 Guardian | skóre: 8
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ahoj, tak tohle je vcelku jednoduchý skript... ono pokud alespoň trochu umíš skriptovat, tak by tě mohl trochu pomoct následující příkaz:

find /DATA/ -name "*" -type f -mtime +2 | xargs tar -cf /tmp/archive.tar

Ten dělá jednoduchou věc a to, že zabalí všechny soubory (vyjma složek) ze složky /DATA starší 2 dní. Pak už stačí jenom zkontrolovat jestli archiv existuje a třeba jestli je větší než nějaká velikost. Pokud budeš potřebovat dovysvětlit i ten zbytek, tak si řekni :)

 

Jarda

28.7.2011 11:10 Marek
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
diky, skriptovat prave neumim :-) ale prikaz chapu. Tzn. pokud by se vse zabalilo ok, soubory muzu smazat takhle nejak?:

find /DATA/ -name "*" -type f -mtime +2 | xargs rm -f

Napada me... neumi ten zdroj po zabaleni smazat primo tar?
28.7.2011 12:39 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
rm vie mazat rekurzívne s prepínačom -r

tar mazať nevie
28.7.2011 12:44 ikarr
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
find maže sám:

find /DATA/ -name "*" -type f -mtime +2 -delete

ty opičky s rm a xargs nejsou potřeba
Guardian avatar 28.7.2011 13:33 Guardian | skóre: 8
Rozbalit Rozbalit vše Re: skript pro promazavani adresare

No vida na to, že to vlastně jde rovnou v taru jsem úplně zapomněl :). Holt hlava děravá, v tom případě bude naprosto stačit tenhle příkaz:

find /DATA/ -name "*" -type f -mtime +2 | xargs tar --remove-files -cf /tmp/archive.tar

28.7.2011 14:20 ikarr
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
-name "*" je zbytečné

otázka pro znalce: není výhodnější namísto roury do xargs použít parametr findu -exec? Něco jako

find /DATA -type f -mtime +2 -exec tar --remove-files -cf /tmp/archive.tar {} \;
Guardian avatar 28.7.2011 14:27 Guardian | skóre: 8
Rozbalit Rozbalit vše Re: skript pro promazavani adresare

To, že -name je v tomhle případě zbytečné je pravda, ale pokud by to chtěl Marek později rozširovat, tak má lepší když bude mít nějakou referenci.

Jinak podle mě se exec v tomhle případě nedá použít, protože předává názvy souborů postupně jak je nachází, ne jako batch. Takže v tom případě by se musel použít rar s appendem, jinak by nám zbyl v archívu jen poslední nalezený soubor.

28.7.2011 14:40 ikarr
Rozbalit Rozbalit vše Re: skript pro promazavani adresare
ano, moje chyba, má to být například:

find /DATA -type f -mtime +2 -exec tar --remove-files -rvf /tmp/archive.tar {} \;

přičemž soubor /tmp/archive.tar musí už existovat.

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.