Jak smazat deset milionů adresářů?

Re: Jak smazat deset milionů adresářů?
« Odpověď #15 kdy: 11. 01. 2011, 15:11:27 »
Dúfam, že nie všetko, určite nie sudo rm -rf / :D


Lukas

Re: Jak smazat deset milionů adresářů?
« Odpověď #16 kdy: 11. 01. 2011, 15:25:16 »
roobertek: to se neboj, zas tak na tom se znalosti linuxu nejsem :D

felix1

Re: Jak smazat deset milionů adresářů?
« Odpověď #17 kdy: 12. 01. 2011, 00:31:27 »
Ach, teraz sa cítim ako blbec, mal som tam napísať že to myslím zo srandy alebo niečo v tom zmysle  :-[

Každopádne aspoň Ubuntu má na to ochranu:

rm: je nebezpečné rekurzívne operovať nad `/'
rm: použite --no-preserve-root na vypnutie tejto bezpečnostnej poistky

Ešte raz sa ospravedlňujem.

Juzek

Re: Jak smazat deset milionů adresářů?
« Odpověď #18 kdy: 12. 01. 2011, 09:50:00 »
sudo rm -rf /  :)
Ta toto by som dal ban!

Súhlasím. Je to ako keď požiadate o radu, a on vám poradí spáchať sebevraždu...

ava

Re: Jak smazat deset milionů adresářů?
« Odpověď #19 kdy: 12. 01. 2011, 10:15:29 »
Kdysi jsem z nejakeho duvodu zkoumal mazani takhle objemnych adresaru, psal jsem si vlastni jednoduche rm, a mam pocit, ze to slo vyrazne rychleji kdyz jsem mazal od posledniho. Zkus pro zacatek

ls test-10000000
kdyz ti to nenapise ls: cannot access ....., tak tam tenhle adresar budto je, nebo tenhle prikaz jeste bezi :)
(pokud jsi vytvareni iteroval jen do devitimiliontyhodevetsetidevadesatidevitihotisicejdevetsetidevadesatidevitho, prislusne uprav cislo, pokud zjistis ze tam neni ani ten, binarnim pulenim zjisti kterej je posledni),
rm test-posledni existujici
kdyz tenhle rm nebude trvat moc dlouho a ls test-posledni ti overi ze skutecne zmizel (ls: cannot access...), zkus

for f in `seq soucasnyposledni -1 soucasnyposledniminustreba100`; do rm $f; done

a pokud bude i tohle bezet rozumne rychle, da uz se s tim pracovat, `seq 10000000 -1 0` sice asi neudelas, protoze se ti to nevejde do argumentu, ale muzes si napsat programek kterej to nejak proiteruje a promaze. Klicovy kazdopadne je ten pokus mazat odzadu, tak snad to pomuze (a kdyz ne, tak fakt nevim :)


Re: Jak smazat deset milionů adresářů?
« Odpověď #20 kdy: 12. 01. 2011, 10:23:58 »
Jsou ty adresáře prázdné? Pokud ano, vyzkoušel bych místo rm -r příkaz rmdir.

find -exec ti pusti rm na každou nalezenou položku zvlášť. To není moc efektivní pro tolik položek. Je lepší použít find .... -print0 | xargs -0 <prikaz>
Jestli ono právě nejde o to, že rm má problém se zpracováním tak dlouhého příkazového řádku...

Re: Jak smazat deset milionů adresářů?
« Odpověď #21 kdy: 12. 01. 2011, 10:34:02 »
V tomto prípade platí pomaly, ale isto. Radšej pomaly mazať po jednom, ako čakať na dlhý zoznam, ktorý aj tak nie je schopný rm zvládnuť.

// http://www.killersites.com/mvnforum/mvnforum/viewthread_thread,3236 tuto tiež píšu xargs...
« Poslední změna: 12. 01. 2011, 11:46:53 od rooobertek »

j.

Re: Jak smazat deset milionů adresářů?
« Odpověď #22 kdy: 12. 01. 2011, 13:38:59 »
find -exec ti pusti rm na každou nalezenou položku zvlášť. To není moc efektivní pro tolik položek. Je lepší použít find .... -print0 | xargs -0 <prikaz>
Jestli ono právě nejde o to, že rm má problém se zpracováním tak dlouhého příkazového řádku...

Prave o to se stara xargs - pusti prave tolik argumentu, kolik system zvladne, v pripade ten program spusti opakovane.

David Sauer

Re: Jak smazat deset milionů adresářů?
« Odpověď #23 kdy: 12. 01. 2011, 14:06:28 »
Co zkusit ext2ed (pripadne jiny editor). Proste hlavni adresar te hiearchie (pokud to jde) odlinkovat s fs, pustit fsck a dat zahodit ? Kdysi to na unixech slo ..

Re: Jak smazat deset milionů adresářů?
« Odpověď #24 kdy: 12. 01. 2011, 14:33:43 »
Co zkusit ext2ed (pripadne jiny editor). Proste hlavni adresar te hiearchie (pokud to jde) odlinkovat s fs, pustit fsck a dat zahodit ? Kdysi to na unixech slo ..
To by ale nejspíš zase ty adresáře vrátilo do lost+founds.

Já bych spustil rm -rf nadslozka (hlavně se vyhnout bash rozkladu *) a nechal běžet. Kdyby to dělalo psí kusy (i/o lock nebo je rm napsaný fakt nějak blbě), tak postupně pomocí findu s nízkou i/o prioritou.

Možná i ionice -c 3 rm -rf nadslozka

MilanK

Re: Jak smazat deset milionů adresářů?
« Odpověď #25 kdy: 12. 01. 2011, 16:25:20 »
a co spouštět ten rm postupně?

find korenovaslozka -depth -print0 | xargs -n 4000 -0 /bin/rm -f

Re: Jak smazat deset milionů adresářů?
« Odpověď #26 kdy: 12. 01. 2011, 17:56:40 »
Možná budu vypadat hloupě, ale proč to nejde pustit v nějakém "manažeru", klidně i v terminálu, např. Midnight commander? Označit vybrané adresáře (resp. "nadadresář") a dát smazat? Ten by si přeci měl poradit se všemi adresáři, vymazat jejich obsah, pokud nejsou správné, atd, ne?

H0ax

Re: Jak smazat deset milionů adresářů?
« Odpověď #27 kdy: 12. 01. 2011, 18:04:20 »
samotným rm to nejde, protože to chcípne na "too many arguments", jediné řešení je spustit to rm přes find, testováno v praxi

Inkvizitor

Re: Jak smazat deset milionů adresářů?
« Odpověď #28 kdy: 12. 01. 2011, 19:53:02 »
Samotné rm to možná nezvládne, ale kombinace ls + xargs --maxargs + rm to zvládne v pohodě. Podle mě je to o něco lepší než řešení s find.

Inkvizitor

Re: Jak smazat deset milionů adresářů?
« Odpověď #29 kdy: 12. 01. 2011, 19:56:07 »
Midnight Commander by to možná zvládnul, ale je relativně pomalý.