Myš je pro kočku: Příliš hluboké disky

Všechny vzdálené disky jsou seřazeny ve svých adresářích. Nastavili jsme si práva a můžeme se dostat, kam jen chceme. Proč je to však tak daleko? Uvažujme třeba typický projekt. Projekt, který běží na jistém stroji (který se jmenuje podle něj), běží pod prostředím uživatele (který se samozřejmě jmenuje podle něj) a je v Pythonu (takže má v sobě adresář stejného jména). Takže jediná správná cesta ke zdrojákům je v adresáři /mnt/projekt/home/projekt/projekt/projekt/ . Někdy struktura pokouší k zbláznění.

Jak se rychle zorientovat na disku, který má v sobě další disky?

Rozcestník

Pátral jsem po nejlepším řešení jak se prohrabovat daty, a překvapilo mě, že internet neoplývá množstvím dobrých tipů.
Zvažoval jsem využít záložky, pak poměrně úspěšně laboroval, jak záložky filtrovat podle místa na disku, kde se nacházím (složitá UserAction, s kterou vás nebudu otravovat).
Nakonec jsem ale přilnul k prostému a příjemnému řešení – starým dobrým zástupcům. INDEX

V díle o Krusaderu jsem zmiňoval, jak si udělat zkratku na snadnou tvorbu symlinků. Založil jsem si rozcestníkovou složku /mnt/index, kde jsou složky podle počítačů, které spravuji, ty však obsahují hromadu zástupců do dalších hlubších složek a souborů. Protože co na vašem stroji spravujete? Nějaký konkrétní projekt, který má zdrojové soubory, pár systémových adresářů… a nepotřebujete se dolovat do cílového disku vždycky celou strukturou od kořene.
Pokud jste postupovali podle tipů z minulého dílu, takže používáte mount_dir.py, můžete rovnou mountovat názvy počítačů v /mnt/index, aniž cokoli kdekoli dalšího někam zadáváte. Už žádný fstab, nic.

Jak vidíte, adresář depo je prázdný. Stejnojmenný adresář index/depo obsahuje skupinku opuštěných zástupců, kterou vedou do /mnt/depo. Jakmile stroj v indexu namountujeme zkratkou, zástupci ožijí. Adresáře jdou prokliknout, soubory zobrazit.

Daleko terminálem

Přes všechny přednosti správce souborů jsou v životě lidském četné chvíle, kdy si musíte vyhrnout rukávy a jít přemýšlet přímo na příkazovou řádku vzdáleného stroje. Jejž můžete nastokrát mít krásně namountovaný, ale co naplat, když se v terminálu šplháte znovu tam, kam jste dolezli rychlostí blesku ve správci. Jedno řešení je nechávat běžet na vzdáleném serveru nějaký tmux, který vám pohlídá relaci i přes pád ssh.

Jak báječné by ale bylo, kdybychom mohli z Krusaderu spustit terminál přímo v adresáři, kde jsme! Pro lokální počítač je takové chování normální, Tools / Start terminal here vám jej otevře v aktuální složce. Ovšem mountované adresáře… otevírá také v aktuální namountované složce lokálního počítače. Spustíte-li program, spustí se na lokálním počítači, nikoli na vzdáleném. To lze napravit několika údernými příkazy v souboru start_terminal_ssh.sh, jehož obsah zkopírujte do svého .bashrc souboru.
Co se stane? Jakmile se otevře nový terminál, úderné příkazy zjistí, jestli se nachází na cestě /mnt, kam jsme dali kromě fstabu všechny disky. V takovém případě si z fstabu načte co potřebuje, a rovnou se přihlásí na vzdálený server do správné složky.
Protože mám hrozně nerad složité machinace v bashi, využívám ještě miniaturní knihovničku pz, kterou nainstalujete přes: pip3 install pz

Tohle řešení automaticky pracuje i s naším rozcestníkem ve složce /mnt/index. Nejprve spustíme mountovací zkratku nad /mnt/index/depo, což namountuje /mnt/depo. Vstoupíme do jednoho symlinků v indexu, který se jmenuje var-www-html. Spustíme terminál ve složce. A náš skript v .bashrc zajistí, že se objevíme ve vzdáleném adresáři na serveru depo, konkrétně ve /var/www/html. Jakmile ukončíme terminál Ctrl+D, ukončí se pouze vzdálená session a my končíme v lokální složce, kam je vzdálený adresář namountován. Soubory jsou tytéž, ale už jsme doma, ne na serveru.

Nejvzdálenější editace

Posledních šest dílů blogu o discích jsem směřoval sem, k tomuto odstavci.
Terminál máme všichni rádi, protože funguje obecně lépe než GUI aplikace. Vývojář změní pořadí tlačítek a léta zkušeností s GUI jsou ta tam. Podobně jako myš používáme, když aplikaci dostatečně nevěříme; jako opěrný bod ale přichází na řadu klávesnice, když jsme si sebou jisti, perfektní GUI nahradí příkazovou řádku. A pro editaci textových souborů je tady prostě skvělý Kate. Edituje lokální soubory, edituje i vzdálené namountované soubory. To se ale bavíme pouze o souborech, které patří danému uživateli.
Pokud zkoušíme editovat cizí lokální soubory, Kate si řekne, že na zápis nemá právo a požádá nás o právo roota. U namountovaných cizích souborů je nám ale právo místního roota k ničemu, protože místní root je úplně cizí člověk než vzdálený root. Zdá se tak, že pro vzdálené cizí soubory nelze Kate použít. Chcete třeba jenom upravit nginx, jednu malou změnu, malý port. Nechcete kvůli tomu startovat příkazovou řádku a v ní textový editor.

Na scénu přichází skript remote_edit.sh. Povolejte jej – zjistí, zda je třeba heslo, soubor přeuloží na náš lokální disk a nastaví na něj systémový hledáček. Jakmile dojde ke změně lokální kopie (kterou jsme upravili), nahraje ji zpět na vzdálený server a nastaví jí správná práva i původního vlastníka. Nejedná se o řešení pro nějaké velké čachry, ale ohromně šetří čas.

Přitom nepotřebuje žádnou velkou přípravu. V Krusaderu vytvořte uživatelskou akci a už nepřemýšlejte, jestli jste na lokálním nebo vzdáleném disku: gnome-terminal -- /path/to/remote_edit.sh %aCurrent%

Namountujeme si disk. Zkoušíme editovat soubor root_owner.txt – marně. Při uložení chce po nás systém heslo pro elevaci na roota, ovšem my bychom potřebovali elevaci na vzdáleného roota, což není možné. V terminálu vidíme, že vzdálený soubor patří vzdálenému rootovi. Což zjistí i remote_edit.sh a heslo po nás chce. Potom soubor v klidu editujeme, při uložení vidíme systémovou hlášku o úspěšném nahrání souboru zpět.

☕ Dalším řešením by bylo spustit vzdálený Kate. Přes předávání X11 příkazem ssh -X se dostaneme ke grafickým aplikacím. Ale ty často na malých jednoúčelových virtuálních strojích nejsou. Instalovat na každý z nich grafické prostředí, jenom abychom mohli občas zeditovat soubůrek je neslabé kafe i na mne.
Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..