.    

POZOR! Tento článek byl naposledy aktualizován před více než dvěma lety!

Je možné, že následující­ stránka obsahuje odkazy, které dnes již nejsou funkční, nebo že některé informace uvedené v tomto článku se v průběhu času ukázaly jako prokazatelně chybné. Pokud jakoukoliv podobnou závadu zjistíte, tak neváhejte napsat co nejpřesnější popis závady do veřejného komentáře pod článkem: redakce TečkyCZ nové komentáře neustále sleduje, a to i pod těmi nejstaršími články. V celé řadě případů lze chyby snadno opravit - např. se stává, že video na YouTube bylo smazáno a znovu nahráno pod jiným id. V jiných případech někdo zase zakáže embedovaní videa, která přitom existuje ve více kopiích, nebo se z webu ztratí stránka umístěná na negarantovaném freehostingu, zatímco původní autor stránek si mezitím zaregistruje vlastní doménu, atd.

Děkujeme všem, kteří pomáhají opravovat chyby ve starších webových stránkách a udržují tak Internet naživu - redakce TečkyCZ.


Jak si zřídit odpadkový koš v Linuxu.

xChaos 20. října 2002 [7414 znaků] [editováno 17. března 2006] [HowKnow]
[ + ] 2 [4x] [ - ] [neaktuální[x]]
Zobrazení 20869 ← Facebook 10 Twitter 24 Google 148
Komentářů 15

Jednou z příjemných vlastností systémů typu DOS byla funkce "undelete". Windows pak (po vzoru Macintoshe) "odpadkový koš" přímo institucionalizovaly. Jednou z nepříjemných vlastností Linuxu až dosud bylo, že na odpadkový koš si hrál pouze na desktopu, a to ještě špatně...
O co v případě odpadkového koše jde: začátečník, který se zaloguje do Linuxu, vidí ikonku odpadkového koše - to je ale jen imitace, která může zmást pouze zcela bezelstného začátečníka. Skutečné "undelete" v MS-DOSu a DR-DOSu, a "odpadkový koš" jak ho známe z Windows, totiž představují nástroje, jak si prohlížet přímo soubory označené v rámci filesystému jako smazané. V případě DR-DOSu a Windows pak byla funkce "undelete" implementovaná už skutečně rozumě: soubory systém fyzicky smazal až v okamžiku, kdy se uživatel rozhodl, že chce provést operaci "Empty Trash", neboli "vyprázdnit odpadkový koš". Windows dokonce uživateli nabízeli "vynesení koše" pokaždé, když na filesystému došlo místo - což pokládám za velice rozumné řešení.

Každý unixový administrátor se při zmínce o odpadkovém koši osype, a začne vykládat cosi v tom smyslu, že mazání znamená mazání, že BFU s oblibou používají odpadkový koš jen jako odkladní plochu pro dočasně nepotřebné soubory, že je možné implementovat různé potvrzující dotazy, apod. Jeden nejmenovaný guru se mým úvahám o potřebe funkce "undelete" v Linuxu vysmál - a za pár minut nato si smazal v právě instalovaném systému omylem celý adresář "/etc"... :-))

V Linuxu si skutečně můžete předefinovat příkaz "rm", aby ve skutečnosti dělal "mv" do nějakého adresáře vyhrazeného jako odpadkový koš: to ale neřeší osud souborů, které byly smazány přímo z programů, systémovým voláním unlink(). Kromě toho - funkce "undelete" by měla být přímo vlastností filesystému, takže "odpadkový koš" potřebujeme nejen pro každého uživatele zvlášť, ale navíc pro každou partition zvlášť, aby mazání zaručeně způsobovalo pouze zápis do adresářové struktury - a nikoliv nějaké rozsáhlé přesuny dat na disku, mezi disky, nebo dokonce po síti (!). "Odpadkové koše" implementované v rámci KDE desktopu fungují právě takhle špatně - jsou to prostě adresáře, do kterých se data fyzicky kopírují, včetně adresářové struktury, a ve verzích, ve kterých jsem tam s odpadkovým košem experimentoval, tam rozhodně nebyly ošetřené ani přesuny dat mezi partitions, ani duplicita názvů souborů. Kromě toho, uživatel root by měl mít možnost obsah odpadkových košů všech uživatelů jednoduše vymazat, když dochází místo na disku - a to je možné, jen když to bude nějak standartizované.

Třeba v případě akutního přeplnění Trash folderů poštovního protokolu IMAP to s oblibou řeším zhruba příkazem "echo -n>/home/*/mail/Trash" - pochopitelně, ještě lepší je skript, který nejdříve testuje existenci mail/Trash, aby omlem někomu nevznikl read-only Trash patřící rootovi... ;-) Nicméně to už jsme trochu někde jinde... podstatné je ale uvědomit si, že administrace Linuxu neznamená nutně jen vhled do bezpečnostní problematiky a bleskuryché instalování všech dostupných záplat, ale hlavně důkladné zamyšlení nad tím, jak systém učinit skutečně pohodlným a použitelným i pro uživatele bez rootovských privilegií a větších technických znalostí - bez ohledu na to, jestli se připojují jen přes FTP, IMAP nebo webové aplikace v PHP (což je nejčastější), nebo používají tradiční textový shell či X11/GNOME/KDE.

Možnost namountovat ext2 partition jako virtuální "undelete filesystem" v Midnight Commanderu se blíží tomu, co je potřeba - bohužel je tragická v tom, že u smazaných souborů v ext2 (a asi i ext3 - opravte mi, jestli to není pravda, situaci v ReiserFS neznám) nelze získat ani fragment názvu soboru, jako to šlo v DOSu, takže v praxi se mi omylem smazaný soboru nikdy nepodařilo najít.

Korektní "odpadkový koš" v Linuxu by měl fungovat asi takhle: šlo by o reálný fyzický adresář "trash" (BTW, windousákům se asi "/bin" plete s jejich "Recycling bin" - nebyl to záměr M$ ? nebo jak se ta ikona dnes vůbec jmenuje - já windows nemám... :-) ...), který by se vyskytoval na každé partition (podobně jako dnes adresář "lost+found" vytvářený při fsck). Práva by měl podobná, jako adresář "/tmp" - sticky bit, umožňující mazání souborů pouze jejich vlastníkovi. V něm existuje několik možných způsobů uspořádání: jeden z nejefektivnějších by vytvořil podadresáře, pojmenované podle uid nebo username daného uživatele, které by měly práva 700 ("drwx------"), a do nich by se dané soubory přesouvaly - buď s plným pathname, nebo do jediného adresáře, s lomítky překonverovanými třeba na podržítka (nejlepší by byla konfigurovatelnost). Redundatní názvy souborů by asi bylo nejlepší řešit čiselnou příponou (.1, .2, ...). Další možností by bylo vyvářet databázi smazaných souborů a jejich názvů, jako to dělají Windows - podle mě má ale tradiční unixový filesystem dost atributů použitelných na vytvoření plnohodnotné adresářové struktury pro smazané soubory, bez nutnosti vytváření nějaké zvláštní databáze.

Je otázka, jestli by se o podobné řešení mazání souborů měl starat přímo kernel. Zdá se, že to není nezbytně nutné. Je pravda, že vlastnost undelete je specifická pro daný filesystem (ne každý filesystem ji může nebo chce podporovat), což by umístění do kernelu nahrávalo, nicméně zatím existují spíš snahy o implementaci "skutečného odpadkového koše" na úrovni knihovny libc. Funkce unlink(), kterou se v programech napsaných v jazyce C a C++ (takže ve všech - protože interpretry skriptovacích jazyků jsou pochopitelně taky napsané v C :-) mažou soubory, je implementovaná v knihovně libc - takže teorie praví, že "pouze" stačí patchnout funkci undelete v libc tak, aby mazané soubory za použití vhodných pravidel přesouvala kamsi, a případně je možné implementovat i jakousi interprocess communication pro potřeby grafického frontendu (ten může sice pravidelně provádět df - "disk free" - a testovat, který odpadkový koš je potřeba vynést, a počítat kolik MB souborů má ten který uživatel právo smazat, ovšem lepší by bylo implementovat to jako součást nově podporovaného protokolu pro oznamování změn v adresářích aplikacím, který se naštěstí na linuxovém desktopu začíná prosazovat... opět rozumná inspirace u Windows, na rozdíl od řady inspirací nerozumných...)

Určitý problém je, že s knihovnou libc je v Linuxu dynamicky zlinkováno VŠECHNO, takže veškeré hrátky s libc jsou složitější, než hrátky s kernelem - ten stačí překompilovat a rebootovat, a v případě nezdaru rebootovat do předchozího. V případě, že si poškodíte libc, vám nebude fungovat vůbec nic - ani shell, pokud si ho pro tento případ nezlinkujete staticky. To, jak přesně bude implementováno dynamické linkování, se v Unixech liší systém od systému, a to, jak to je konkrétně řešené v systému GNU, sice není špatné, ale není to ani dokonalé (pro nezasvěcené: Linux - to je jen kernel, GNU - to je kromě nepřeberného množství utilit především právě knihovna libc pro Linux, která má sama o sobě několik MB...)

Každopádně - undelete patch do libc už existuje - jestli chcete můžete si s ním hrát. Mě osobně odradila nutnost rekompilovat libc (ani od ní na disku nemám zdrojáky...), nicméně kdyby se "undelete" stalo standartní vlastností budoucích distribucí Linuxu (se kterou by navíc spolupracovaly vizuální "odpadkové koše" uživatelů GNOME a KDE) bylo by to podle mě super. Samozřejmě by to mělo být konfigurovatelné, aby si to opravdoví "unixoví guruové" mohli vypnout... a všichni bychom pak také určitě ocenili nějaký switch pro rm, třeba --shred, který by u citlivých dat odpadkový koš nějak vynuceně obešel :-)


Sloupcová sazba: pokud je okno prohlížeče dostatečně velké (na monitoru s dostatečným rozlišením), zobrazí se článek ve více sloupcích (w3.org). Testováno v browserech Firefox, Opera a Chrome. Není implementováno v Internet Exploreru. Tato feature může způsobovat problémy ve starších verzích prohlížečů s jádrem Webkit (Google Chrome, Safari, Konqueror). Pokud nevidíte článek celý, zkuste zmenšit okno prohlížeče nebo použít verzi pro tisk. [zpět na začátek sloupcové sazby]
Pokud se vám článek líbil, zkuste autora podpořit [zobrazit možnosti]
Sdílet v síti [Identi.ca - musíte být předem přihlášeni] [Twitter] [Facebook] [Jagg.cz]
Formátovat pro tisk [bez komentářů] [s komentáři]
Krátká forma URL (adresy) [http://teckacz.cz/72]
Všechny články [od autora xChaos] [v rubrice HowKnow] [nejnovější]

Hodnocení článku čtenáři [ + ] 2 [4x] [ - ]
Tip: Pro moderaci článků (kladné nebo záporné hodnocení) je nutné použít browser, který podporuje javascript a cookies.
Komentáře čtenářů [napsat vlastní]
Skrýt hodnocené nebo méně


[] fict10n 21. října 2002 ← komentářů 9 0 [2x]
[ + ] 0 [2x] [ - ] [informativní[x]]
→ [/-/199] ← na komentář můžete odpovědět nebo ho sdílet
Včera jsem si nainstaloval MDK 9.0. V GNOME 2 má každý uživatel svůj koš. Koš se navíc vytváří pro každý oddíl. Napr. pro uzivatele martin se vytvoří "/home/martin/.Trash", na oddilu s fat32 se vytvoří "/mnt/windows/.Trash-martin". Funguje to pouze v Nautilusu a z koše lze soubory pouze ručně přesunout zpět na původní místo, soubory si s sebou nenesou informaci o původním umístění. Nelze je tedy jako ve Windows "obnovit".

[] xChaos 21. října 2002 ← komentářů 5513 1 [3047x]
[ + ] -1 [1x] [ - ]
→ [/-/200] ← na komentář můžete odpovědět nebo ho sdílet
no vida, ja si s GNOME 2 nehral, ale je videt, ze uvazuji podobnym smerem jako ja, jestli je ted trash na kazde partition. Ovsem otazka je, jak tam vznikne - to bezi Nautilus pod rootem ? Nebo vznikne jen na partitions, kde ma dany uzivatel pravo zapisu ?... [celkem 696 znaků] [zobrazit]

[] Czerteak (anonym) 21. října 2002 ← komentářů 12 -2 [2x]
[ + ] -1 [1x] [ - ]
→ [/-/205] ← na komentář můžete odpovědět nebo ho sdílet
Proti undeletu pro BFU vcelku nic nemam, ale jakozto progrmator (rozumej vice programator nez uzivatel) jsem rozhodne PROTI tomu, daat takovehle zverstvo do kernelu a myslenka s modifikaci glibc se mi taky moc nezamlouva. Normalni BFU stejne pouziva... [celkem 513 znaků] [zobrazit]

[] xChaos 21. října 2002 ← komentářů 5513 1 [3047x]
[ + ] -1 [1x] [ - ]
→ [/-/206] ← na komentář můžete odpovědět nebo ho sdílet
Czerteak: umisteni do kernelu by nasvedcovalo to, ze nektery filesystem tu vlastnost ma, a nektery nema. Ale ok, to muze byt flag v /etc/fstab. jinak patch do libc je fakt nezbytny, protoze nedonutis programatory, aby zacali misto unlink(file) pouzivat... [celkem 1575 znaků] [zobrazit]

[] David Majda 21. října 2002 ← komentářů 2 0 [2x]
[ + ] -1 [1x] [ - ]
→ [/-/208] ← na komentář můžete odpovědět nebo ho sdílet
Jen bych upozornil, ze na Win32 maji programy moznost mazat soubory jak normalne bez kose (API fci DeleteFile), tak i do kose (pomoci API SHFileOperation). Pokud by se to implementovalo do libc bez moznosti vypnuti, tak by se do kose presouvaly i ruzne temp-files apod., coz by akorat otravovalo a matlo. Podle me by na mazani pres kos mela byt nova fce. To ma ale zase nevyhodu, ze v soucasnych programech by to nefungovalo. Jednoznacne reseni ale v tomto pripade neexistuje.

[] xChaos 21. října 2002 ← komentářů 5513 1 [3047x]
[ + ] -1 [1x] [ - ]
→ [/-/211] ← na komentář můžete odpovědět nebo ho sdílet
diky moc za info - o win32 api toho moc newim...
<p>
jak rikam - logicke je mit to konfigurovatelne pro kazdy filesystem zvlast. Docasne soubory patri v Linuxu do /tmp, a na vetsich systemech je zvykem delat pro /tmp extra partition, ktera je namountovana jako noexec - nejde z ni spoustet binarky. Takze pro filesystem pouzity pro /tmp by se odpadkovy kos vypnul...

[] David Majda 22. října 2002 ← komentářů 2 0 [2x]
[ + ] 1 [1x] [ - ]
→ [/-/214] ← na komentář můžete odpovědět nebo ho sdílet
OK, ale co kdyz treba budu odinstalovalvat nejaky program pomoci RPM -- to se urcite budou muset mazat soubory v /usr/bin apod. Casto se ale budou taky mazat ruzny konfiguraky z /etc nebo soubory typu /home/.nazev_programu.rc. A rekl bych, ze pokud by kos mel fungovat spravne, tak defaultne by zrovna pro /home a /etc mel byt zapnuty, protoze jsou to 2 adresare, kde se dost casto mazou potencialne dulezite soubory. Mozna by slo udelat nejake vyjimky per program, ale to by vec jen zkomplikovalo a asi by se vzdycky nasly protipriklady. Osobne bych to fakt asi delal jako novou fci.

[] Czerteak (anonym) 22. října 2002 ← komentářů 12 -2 [2x]
[ + ] -1 [1x] [ - ]
→ [/-/215] ← na komentář můžete odpovědět nebo ho sdílet
xChaos: Jenze Ty jsi muj nazor asi zcela nepochopil. "Odpadkovy kos" by rozhodne nemela byt standardni nebo snad nedejboze defaultni funkce systemu a proto v kernelu a glibc nema co delat, je to jen Windozacka lamerovina... ... [celkem 772 znaků] [zobrazit]

[] Toom 23. října 2002 ← komentářů 3 1 [1x]
[ + ] 1 [1x] [ - ]
→ [/-/217] ← na komentář můžete odpovědět nebo ho sdílet
Ja si myslim, ze pokud by ten kos byl 'inteligentni' a vypinatelny alespon na urovni /etc/fstab, tak by to mohlo byt na urovni fce unlink.

Pod inteligentnosti si lze predstavit napr. to, ze by se kos automaticky vyprazdnoval po urcite dobe, nebo v pripade jeho zaplneni. Nebo jeste lepe v pripade, ze by dochazelo misto na disku by se automaticky vyprazdnoval kos podle data a casu vyhozeni souboru do kose.

Jinak pro experimenty s fci unlink lze pouzit jednoduchou fintu .Naprogramujete novou fci unlink, vytvorite shared library unlink.so a pouzijete

LD_PRELOAD=unlink.so program_ktery_chci zkouset

[] Martin Dvořák 30. října 2002 ← komentářů 5 -1 [3x]
[ + ] -1 [1x] [ - ]
→ [/-/255] ← na komentář můžete odpovědět nebo ho sdílet
Podle me by kos mel byt resen takto: pokud se smaze soubor nebo adresar, mel by normalne fyzicky zustat tam kde je, akorat by se mu dal priznak, ze je smazany. Klidne by mohlo byt v adresari smazano i vice souboru stejneho jmena, ale lisici se napr. v... [celkem 1258 znaků] [zobrazit]

[] xChaos 30. října 2002 ← komentářů 5513 1 [3047x]
[ + ] -1 [1x] [ - ]
→ [/-/256] ← na komentář můžete odpovědět nebo ho sdílet
Czerteak: Ty jsi me nepochopil. Uvedl jsem jasne duvody, proc je kos v GNOME nebo KDE blbost. Kdyz si omylem smazu soubor, tak to rozhodne neni v situaci, kdy ho nekam drag'n'dropuju, coz skoro nikdy nedelam. Pouzivam k bezne praci mc a bash, tzn. prikaz... [celkem 1496 znaků] [zobrazit]

[] Martin Dvořák 30. října 2002 ← komentářů 5 -1 [3x]
[ + ] -1 [1x] [ - ]
→ [/-/259] ← na komentář můžete odpovědět nebo ho sdílet
xChaos: no na to muzu odpovedet jen tak, ze pokud nechce uzivatel aby soubor byl smazan, tak jej nema mazat ;) Moje koncepce prece brani smazane soubory do posledni chvile.. :) Me to proste prijde jako idealni reseni, a diky novym syscallum by se dala... [celkem 698 znaků] [zobrazit]

[] Martin Dvořák 30. října 2002 ← komentářů 5 -1 [3x]
[ + ] 1 [1x] [ - ]
→ [/-/260] ← na komentář můžete odpovědět nebo ho sdílet
xChaos: jeste doplneni: transparentne jsem nemel na mysli, ze bude sam system prubezne mazat behem nevyuzitych cyklu nebo tak neco.. ale jen kdyz bude potreba uvolnit nove misto pro soubory.

[] xChaos 31. října 2002 ← komentářů 5513 1 [3047x]
[ + ] -1 [1x] [ - ]
→ [/-/261] ← na komentář můžete odpovědět nebo ho sdílet
Jezek: ja tvoji koncepci chapu, a je to rozhodne jeden z moznych rezimu, jak by to mohlo fungovat, ale prece chceme aby to byl Linux, a slo to konfigurovat. Takze na serveru by se smazany soubory treba umazavaly on-fly, ale proc by na deskopovem stroji... [celkem 685 znaků] [zobrazit]

[] xChaos 11. května 2011 ← komentářů 5513 1 [3047x]
[ + ] 0 [0x] [ - ] ← pro ohodnocení komentáře se není nutné nikde registrovat
→ [/-/14904] ← na komentář můžete odpovědět nebo ho sdílet
Příklad totálně offtopic historického článku - obě dvě hlavní desktopová prostředí GNOME i KDE mají toto už po všech těch letech vyřešené zcela konzistentně, funkčně a blbuvzdorně.

Ale moderovat 9 let staré komentáře pod 9 let starými články ... hmm, v podstatě to ukazuje sílu mého systému :-)
 

Počet zobrazených komentářů: 15 [celkový čas potřebný k prohledání databáze a vytvoření stránky: 0.58 sekund]

Pozor, vložením komentáře souhlasíte s pravidly hry TečkyCZ! [zobrazit pravidla] →
Ochrana proti spambotům - tři-krát-tři je ... ? (napište číslicí - nemělo by byt potřeba při zapnutém JavaScriptu)
Sociální síť (přihlaste se předem, 1. řádek<=96 znaků=status, zbytek=odkaz)
Offtopic resolver (týká se odpověď původního tématu, nebo patří jinam?)
Přezdívka (povinně) - nepoužívejte speciální znaky, mezery=podtržítka
E-mail (volitelně) - nebude zobrazen, zobrazí se ikonka z [www.gravatar.com]

Nelze použít HTML [zobrazit mikrosyntax] →

Nápověda: ve vlastním zájmu uvádějte u komentářů pouze funkční a dostupnou e-mailovou adresu. Přezdívku, která je jednou spojená s konkrétní e-mailovou adresou, už nyní nelze bez zásahu administrátora serveru spojit s jinou adresou. Uvedením neplatné e-mailové adresy si v budoucnu znemožníte upload ikonky i možnost použít některé další chystané neanonymní funkce vázané na uvedení platné e-mailové adresy.


TečkaCZ [Nejnovější články] [Nejnovější komentáře] [Zeď vzkazů] [Zeď odkazů] [Začátek článku]

    TečkaCZ
  •  
  • Komentáře →
  • Nástěnky →
  • Debaty →
  • Články →
  • Ročníky →
  • Rubriky →
  • RSS kanály →
  • Vzhled →
  • Ostatní →
  •  
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
  •  
.

[Arachne Labs]

[SPOJE.NET]

[Právě dnes | Tech | Ostatní]

Yacy P2P web search jabber.arachne.cz
tiskové zprávy a otevřené dopisy přebíráme z nejrůznějších informačních kanálů (i bez výslovného souhlasu autorů)
licenční práva k použitým obrázkům a grafickým motivům nejsou definována (přebírejte pouze texty bez obrázků)
texty článků i komentáře bez uvedení copyrightu jsou chráněny GNU Free Documentation License
založeno na Quzo engine, (G)1999-2002 David Čermák, (G)2002-2012 Michael Polák
Quzo engine vyvíjejí Arachne Labs, webhosting sponzorují SPOJE.NET
seznam aktuálních článků je dostupný i ve formátu RSS (XML)
můžete také sledovat Twitter feed TečkyCZ.
test XHTML a CSS2 validity