Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

cz. 2 | W Uniksach to prostsze

Witam czytelników mojego bloga ;-)

Wiem, że pierwsza część "W Uniksach to prostsze" nie wypadła zbyt dobrze, jednak postanowiłem naprawić to drugą częścią w której napiszę o przenoszeniu danych przy reinstalacji systemu.

Tak więc w Uniksach jest drzewo katalogów z dowolną możliwością dopinania kolejnych katalogów z najbardziej przeróżnych lokalizacji zaczynając od innej partycji, przez pamięć flash telefonu komórkowego a kończąc na serwerze stojącym na drugim końcu planety.

Fot: http://docstore.mik.ua

Dla przypomnienia struktura katalogów Uniksowych.

/etc - pliki konfiguracyjne /dev - pliki urządzeń np. /dev/sda1 to pierwsza partycja pierwszego dysku twardego /proc - informację na temat parametrów pracy systemu oraz uruchomionych procesów /sys - pliki jądra, systemu /boot - jądro Linux/BSD/Haiku lub inne, bootloader /home - katalogi domowe użytkowników /lib - ważniejsze biblioteki systemowe np. libc /usr - biblioteki, pliki źródłowe, zainstalowane programy użytkownika /bin - podstawowe tekstowe narzędzia systemowe /sbin - podstawowe narzędzia tekstowe do administracji systemem /mnt - zamontowane partycje /media - można powiedzieć, że to samo co /mnt, /media nie musi występować w każdej dystrybucji /var - logi, pliki systemowe, "cache" /tmp - blokady, pliki tymczasowe, śmieci oczyszczane automatycznie /root - katalog domowy użytkownika "root" (korzenia - administratora) /opt - dodatkowe aplikacje najczęściej instalowane z poza repozytoriów, oprogramowanie własnościowe

Tak więc mamy katalog główny "/", a do niego dopięty z innej partycji katalog home (/home).
Dzięki temu, że katalog /home jest na innej partycji możemy śmiało rozpocząć reinstalację systemu bez obawy, że dane zostaną usunięte razem z systemem.
Po instalacji nowego systemu wystarczy tylko zamontować katalog /home spowrotem aby nasze dane wróciły.

Katalog /home jest tylko przykładem, możemy przenieść na inną partycję, inne urządzenie czy na inny serwer dowolny katalog (prócz /etc jak Mi na logikę się wydaje), nie musi to być /home, może to być /srv/www czy /home/webnull/TajnePrzezPoufne.

Nie wiem jak w MacOSX ale w Windowsach przenosiomy dane na inną partycję, czasami godzinami kopiując, myślę, że Uniksowe rozwiązanie jest nico prostsze. 

Komentarze

0 nowych
przemek1234   7 #1 31.12.2010 19:14

W Windowsie też da się zamontować partycję jako folder, a nie jako kolejną literkę, wystarczy, że oby dwie będą w NTFS'ie.

webnull   9 #2 31.12.2010 19:19

@przemek123
Dobrze wiedzieć że da się jakimś cudem coś tam wykombinować.
W Uniksach można mieszać systemy plików i to jest dobre.

A czy możesz podmontować inną partycję w miejsce hmm... np. /system32 ?

webnull   9 #3 31.12.2010 19:19

@przemek123
Albo Documments And Settings (Starsze windowsy) i "Users" czy możesz trzymać na osobnej partycji?

nintyfan   11 #4 31.12.2010 19:34

@przemek1234 | 31.12.2010 19:14 :
Tak. Da się. Chyba nawet punkty montowania są automatycznie pamiętane(kiedyś coś takiego tylko widziałem). Można nawet zmienić ścieżką do profilu. Problem w tym, że w Linuksie jest to prostsze, po podczas instalacji bez problemu można wszystko skonfigurować. Wystarczy tylko utworzyć partycję podczas instalacji, i przypisać jej punkt montowania na /home .
Domyślam się, że wpisy webnull nie mają udowodnić, że pod Windowsem się czegoś nie da - godziny szukając, kompilują, i instalując programy da się bardzo wiele. Problem tylko w tym, że w Uniksach niektóre rzeczy są wręcz naturalne - wystarczy tylko dowiedzieć się, czym jest montowanie, a rozwiązanie samo przyjdzie. W Windows trzeba najpierw pomyśleć, że chcemy zabezpieczyć nasze dane, potem myśleć nad rozwiązaniem, dowiedzieć się o montowaniu(bardzo trudne, szczególnie z powodu braku możliwości wyklikania tego - większość użytkowników Windows nie wie, że coś takiego ma w systemie), a potem przejść przez czarny ekran konsoli, by ustawić punkt montowania.
Windows ma dosyć duże możliwości, a nie którzy nawet twierdzą, że bardziej pasuje do filozofii Uniksa niż Linux(np. NTFS), natomiast by wykorzystać drzemiący w nim potencjał, to trzeba w tym bez przerwy siedzieć. W Linuksie da się tyle samo, lub nawet więcej, ale mniejszym kosztem.

nintyfan   11 #5 31.12.2010 19:39

@webnull | 31.12.2010 19:19 :
Można. W Windows występuje coś takiego, jak rejestr, i jest to odpowiednik root (/) w Uniksach. Problem tylko w tym, że nie trzymamy tam danych/binarek.
Rejestr obsługuje jednak dowiązania, zasoby sieciowe, ma jakby root(może ma parę katalogów głównych/gałęzi, ale to tylko niepotrzebny detal, i tak każda z tych gałęzi ma unikalną nazwę w danej sesji). Obsługuje też wiele rodzajów plików, w tym różne listy i obsługuje multiarch.

W dodatku, to wiele programów znajduje swoje zasoby właśnie dzięki rejestrowi. Inaczej rzecz ujmują, to mimo iż w Windows lokacja programu jest dodawana do ścieżek wyszukiwania programów/bibliotek, to i tak programiści radzą sobie na Uniksowy sposób, jednak są tego nieświadomi.

Powracając do tematu - rejestr jest odpowiednikiem root (/) - poczynając od rejestru programy zainstalowane w systemie znajdują swoje pliki. Można tam też zapisać zmienne środowiskowe odpowiadające Moje Dokumenty, Pulpit, Dane Aplikacji, itd.

nintyfan   11 #6 31.12.2010 19:41

@nintyfan | 31.12.2010 19:39 :
Pomyliłem się - Windows ma coś takiego, jak root(wirtualny system plików), ale i tak rejestr jest pewnym odpowiednikiem.

Główną bolączką Windowsa jest WinAPI. Windows już dawno przepisano tak, by był bardzo podobny do systemów Unikowych. Jednak nawyki robią swoje, a do tego dochodzi kwestia chęci utrzymania hegemoni przez Microsoft. Jak już pisałem wcześniej - niektórzy twierdzą, że NT jest nawet lepszy, ale jakoś ja tego nie widzę.

nintyfan   11 #7 31.12.2010 19:42

Dodam tylko tyle, że mieszając coś z montowaniem i zmianą lokalizacji Pulpitu na Windowsie można sporo namieszać w systemie. Takich operacji nie powinno się przeprowadzać po pierwszym logowaniu użytkownika.

webnull   9 #8 31.12.2010 20:15

@nintyfan
Pewnie, nie mam zamiaru pisać, że tego i tego nie można zrobić pod Windowsem - piszę tylko, że w Uniksach to prostsze.

przemo_li   11 #9 31.12.2010 21:03

Opisany sposób działa nawet z wieloma dystrybucjami Linuksa. Np. Ubuntu i OpenSuSE dzielące wspólną partycję /home

Wszelkie ustawienia aplikacji są przechowywane w /home więc bez jakiejkolwiek ingerencji, są one dostępne i pod Ubuntu i pod OpenSuSE.

Razi   5 #10 31.12.2010 21:35

kiedyś na windzie się znalazłem na czymś w stylu "/". Można robić dowiązania podobnie jak na linuksie, są domyślnie robione w win7 w dokumentach, jednak tworzenie ich nadal jest ukryte pod jakąś komendą w cmd.

przemo_li   11 #11 31.12.2010 21:40

Acha, aby zadziałało z dwoma Linuksami, na obu musimy utworzyć konto o takiej samej nazwie. (Nazwa jest od razy nazwą dla katalogu domowego tak jak w W7)

nintyfan   11 #12 01.01.2011 11:15

@przemo_li | 31.12.2010 21:40 :
Nie nazwie. Nazwa może być różna. Identyczny musi być UID i katalog domowy.

skandyn   9 #13 01.01.2011 11:52

Większość użytkowników Windowsa ma swoje najważniejsze dane (filmy, muzyka, obrazy, itp.) na drugiej partycji oznaczonej literką D. W przypadku reinstalacji systemu nic nie trzeba kopiować godzinami. Co więcej, Linuks nie ma takich narzędzi jak Windows do szybkiego przywracania systemu np. EASEUS Todo Backup lub COMODO Time Machine. Tak więc nie ma potrzeby w ogóle na nowo instalować system wystarczy cofnąć się do wcześniejszego stanu.

Trochę to jest robienie na siłę, że Linux jest dużo lepszy od Windowsa.

Pozdrawiam.

webnull   9 #14 01.01.2011 11:57

@skandyn
Tylko wiele razy system nie działa jak trzeba po takim "cofnięciu w czasie" - coś już o tym wiem...

micko   8 #15 01.01.2011 12:28

@Razi
Nic nie jest ukryte. To tylko zwykła komenda 'mklink'
http://en.wikipedia.org/wiki/NTFS_symbolic_link
Można też tworzyć dowiązania do udziałów Samby. Przydatna rzecz.

@webnull
Tak 'Users' można trzymać na innej partycji niż systemowa. tworząc dowiązanie wspomnianym mklink. Niestety istnieje jedno zastrzeżenie: musi to być partycja NTFS. Pytanie tylko po co to robić. Żeby odzyskać ustawienia po formacie czy czymś podobnym? Od tego są kopie zapasowe, które standardowo archiwizują 'Users'. Poza tym 'Dokumenty', 'Obrazy', 'Muzyka' to tylko biblioteki, które agregują zawartość różnych lokalizacji, niekoniecznie z partycji systemowej

XeonBloomfield   5 #16 01.01.2011 12:38

@webnull:

Gdzie zgubiłeś katalog "/opt"?

Możesz o nim napisać tak: "Katalog zarezerwowany na aplikacje i dodatki nie znajdujące się domyślnie w dystrybucji."

webnull   9 #17 01.01.2011 12:39

@XeonBloomfield
Fakt, opta zgubiłem ;-)

  #18 01.01.2011 12:59

Skandyn - od 4 lat pracuje w serwisie komputerowym i powiem Ci, że jesteś w błędzie. Średnio miesięcznie robię 50-60 PC i w 99% przypadkach pomimo, że jest partycja D i E to i tak wszystko ludzie trzymają na pulpicie, pulpit załadowany ikonami i folderami "muzyka" "dokumenty" "zdjęcia" ... i potem "Panie jakiś komunikat, że mało miejsca" .... i trzeba uświadamiać ludzi, aby trzymali to na innej partycji i co najwyżej zrobili skróty do folderów.

  #19 01.01.2011 14:06

Przewrotnie można by powiedzieć, że jakby nie było partycji D i E to by ludziom nie wyskakiwał komunikat, że miejsca jest za mało, bo byłby tylko dysk C.
Podobnie w Linuksie, można wszystko wrzucić na jedną partycję. Są plusy dodatnie i ujemne ;) takiego rozwiązania. Jak katalog domowy rozrośnie się ponad miarę to może przytkać system. Po to się wydziela np. katalog var na serwerach. Ale za to łatwiej reinstalować system jak jest wydzielona partycja z home. Z drugiej strony szkoda, jak np. na home brakuje miejsca, a jest na osobnej partycji, a na partycji systemowej jest jeszcze niewykorzystane miejsce. Podobnie z partycją systemową, może się okazać, że zainstalowaliśmy tyle programów, że brakuje miejsca i szkoda tego placu, co się marnuje na home. O swapie to można by go całkiem nie wydzielać, gdyby nie to, że nie jest to polecane. Szczególnie jak się wykorzystuje hibernację to swap musi być.

_qaz7   6 #20 01.01.2011 14:27

Największą porażką w windows jest katalog 'Documents and settings' - ten kto to wymyślił powinien się smażyć w piekle ;-)
W windows XP było coś, co się nazywało unattended installation - w praktyce był to plik który definiował parametry instalacji. Pozwalał na zdefiniowanie instalowanych komponentów windy, oraz m.in. na ustawienie nazwy dla katalogu 'windows', nazwy i lokalizacji 'Documents & settings', nazwy i lokalizacji 'Program Files' oraz 'common files' - gdy xp się zainstalował, wszystkie wpisy w rejestrze wskazywały na odpowiednie katalogi. Na generowaniu obrazu płyty z takim plikiem polegało zadanie znanego wszystkim 'odchudzacza windy' - nLite. W Vista/7 zmieniono ten tryb instalacji nie pozwalając na wybranie sobie nazw ani lokalizacji - wiec wszystkie katalogi systemowe instalują się tak jak sobie MS zażyczył. W takim przypadku by zmienić potem lokalizację katalogu np. Program Files / Program Files (x86) - trzeba zamienić wszystkie wpisy w rejestrze odnoszące się do tej lokalizacji- a żeby nie było za łatwo, to WMP,IE i większość niepotrzebnego syfu typ windows movie maker, itp mają w rejestrze po 100 wpisów do tych ścieżek i to bez użycia zmiennych systemowych %ProgramFiles%. czyli zamiast zmieniania jednej wartości w rejestrze, musimy ich zmienić kilkaset. Regedit oczywiście nie ma find&replace - wiec zabawa z palca. Ale i tu czeka niespodzianka :-) do większości wpisów nie mamy uprawnień nawet jako administrator - gałęzie są własnością TrustedInstaller, wiec żeby zmienić taką ścieżkę, trzeba najpierw przejąć na własność taki klucz, potem nadać uprawnienia dla administratora i dopiero zmienić wpis. Dla kilkuset takich wpisów to zabawa pewnie na kilka godzin... Pozostaje wiec niestety zaskrypotowanie tego w powershellu lub co gorsza oprogramowanie, albo niestety WinPE i ręczne zmiany nazw/lokalizacji katalogów i dorzucanie potem im symlinków. Jedno i drugie rozwiązanie jest zaprzeczeniem user-fiendly.

gniemirowski   5 #21 01.01.2011 17:44

@webnull: montowania partycji pod katalog nie robi się w Windowsie jakiś cudem tylko normalnie klika i jest to tak samo trywialne jak pod Linuksem

@przemek1234: nie jest prawdą, że montowana partycja musi być NTFS

GL1zdA   12 #22 01.01.2011 19:13

@gniemirowski, przemek1234
Ściślej, partycja 'do' której montujesz (ta zawierająca katalog, do którego montowana jest partycja) musi być NTFS, bo działanie opiera się na funkcjonalności NTFSa.

Co do całej dyskusji o istnieniu / w *nixach i braku w Windows - w Windows po prostu tego nie widać, bo dyski są tak naprawdę gałęziami wyciętymi z pewnej hierarchii (podobnie rejestr). Najłatwiej to zobrazować w ten sposób, że w Windows / to coś takiego jak /proc w *nixach (działanie jest zupełnie inne, ale chodzi o to jak wygląda hierarchia), dopiero w nim gdzieś głęboko jest katalog, którego zawartość odpowiada temu, co widać w 'Mój komputer'. Jak ktoś chce dokładnie się przyjrzeć, to polecam WinObj (odnajdziecie zarówno C:, D: itp jak i np. rejestr - w szystko w jednej hierarchii): http://technet.microsoft.com/en-us/sysinternals/bb896657 i książkę Windows Internals Russinovicha.

webnull   9 #23 01.01.2011 20:15

@gniemirowski
Szkoda, że jednak pod Windowsem nie jest to czynność codzienna jak pod Uniksami :-)

gniemirowski   5 #24 01.01.2011 21:11

@webnull: jeśli pod Uniksami to jest czynność codzienna to współczuję, ja wolę po prostu używać komputera a nie codziennie przemontowywać partycje :D
Można za to współczuć, że jest to czynność mało znana, tak samo jak twarde dowiązania, łącza symboliczne czy alternatywne strumienie danych.

webnull   9 #25 01.01.2011 21:42

@gniemirowski
Na codzień jednym klikiem montuję pendrive, jednym poleceniem sftp, a na starcie systemu montuje Mi się automatycznie /home z osobnej partycji oraz kilka partycji do /media

kwpolska   6 #26 01.01.2011 22:03

@webnull:
Patrz junkcje NTFS.
@nintyfan:
rejestr to raczej odpowiednik /etc i ~/.* dla HKEY_CURRENT_USER. Tam trzymane są ustawienia systemu/użyszkodnika.

gniemirowski   5 #27 01.01.2011 22:21

@webnull: no to super, identycznie jak pod Windows :)

webnull   9 #28 01.01.2011 22:21

Rejestr to serce i pięta achillesowa Windowsa.
Dlatego chyba sposób przechowywania plików w /etc wydaje Mi się lepszy od rejestru.

webnull   9 #29 01.01.2011 22:22

@gniemirowski
Masz c:/Users na innej partycji i jest zawsze montowana na starcie systemu?

GL1zdA   12 #30 01.01.2011 22:50

@webnull
Rejestr właśnie powstał po to, by nie było 1000 plików na dysku (Tak było w Windows 3.11), a jedna baza i jednocześnie wymusza na programistach dodanie cywilizowanej metody zmiany ustawień. Pięta achillesowa? Nie bardzo wiem dlaczego.

gniemirowski   5 #31 01.01.2011 23:00

@webnull: nie mam ale mogę mieć :) A pendrive'y to się pod Windows zawsze same montowały :)
Chodziło mi o to, że montowanie pod Windows jest trwałe więc fakt, że pod Linuksem dzieje się to automatycznie nie odbiega od sytuacji pod Windowsem. Różnica jest tylko taka, że pod Windows ludzie z montowania korzystają dużo rzadziej.

A co do rejestru to nie wiem dlaczego miałby być piętą Achillesową. Pamiętam, że pod Windows 98 często pliki rejestru ulegały uszkodzeniu ale od tamtych czasów na żadne uciążliwości związane z rejestrem nie natrafiłem. Nie widzę też tak naprawdę dużej różnicy w stosunku do /etc. Czy zmieniam linijkę xyz w /etc/foo/bar to dla mnie mniej więcej to samo co edycja wartości xyz w kluczu HKLM/foo/bar. Dodatkowo ma się ACLe na klucze oraz logowanie zapisów i odczytów.

GL1zdA   12 #32 01.01.2011 23:00

@webnull
"Masz c:/Users na innej partycji i jest zawsze montowana na starcie systemu?"
Jest zawsze podmontowana - to nie ma związku z systemem operacyjnym tylko z NTFSem. Nie ma czegoś takiego jak 'moment montowania'. Jeśli Users jest oddzielną partycją, to gdy Windows przechodzi przez ścieżkę i natrafia na Users, to dowiaduje się, że powinien pofatygować się na inny dysk i to robi.

micko   8 #33 01.01.2011 23:05

@webnull
Ja mam zawartość pulpitu (katalog Desktop) na osobnej partycji. Jesteś kontent?

webnull   9 #34 01.01.2011 23:30

@micko
Takiej odpowiedzi oczekiwałem.

roobal   15 #35 02.01.2011 15:40

Warto zauważyć, że np. we FreeBSD nie ma katalogu /home, we FreeBSD /home jest tylko dowiązaniem symboliczym do /usr/home, w tym systemie katalogi domowe znajdują się właśnie w /usr/home.

Pozdrawiam!

StawikPiast   11 #36 02.01.2011 20:21

ale po co robic takie rzeczy? Tam gdzie potrzebne sa tego typu sztuczki stosuje sie AD i tych sztuczek nie trzeba stosowac :)
Dane uzytkownika sa na serwerze bezpiecznie chronione i backupowane. Dane przechwiuje sie na SharePoint Server, e-maile w exchange itd itp. Generalnie juz od wielu lat dziala prywatna chmura i tak sie dziala. A jesli trzeba cos ustawic to admin robi to skryptem czy przez gpo na wszystkich komputerach i juz. Ta zabawa jest juz w obecnych czasach zbedna. Swiat idzie do przodu i szybciej bedzie cos w stylu chromeOS gdzie uzytkownik nic nie robi niz taka dlubanina.

webnull   9 #37 02.01.2011 21:09

@StawikPiast
O czym ty mówisz, znowu robisz offtopic?

command-dos   18 #38 03.01.2011 06:37

@gniemirowski - "A co do rejestru to nie wiem dlaczego miałby być piętą Achillesową. Pamiętam, że pod Windows 98 często pliki rejestru ulegały uszkodzeniu ale od tamtych czasów na żadne uciążliwości związane z rejestrem nie natrafiłem. Nie widzę też tak naprawdę dużej różnicy w stosunku do /etc. Czy zmieniam linijkę xyz w /etc/foo/bar to dla mnie mniej więcej to samo co edycja wartości xyz w kluczu HKLM/foo/bar. Dodatkowo ma się ACLe na klucze oraz logowanie zapisów i odczytów." - odniosę się do tego ;)
1) racja, że w stosunku do 98 pady rejestru występują rzadziej, ale występują i to często...
2) różnica pomiędzy rejestrem, a /etc jest kolosalna. Rejestr to "baza danych", w której panuje nieład i jakieś dziwne zasady. /etc to katalog, w którym mamy zwykła pliczki, gdzie panują takie same zasady jak w systemie plików. Mało tego, mamy tam czytelnie zorganizowane przechowywanie ustawień, co sprawia, że nawet laik może przywrócić sobie część lub całość ustawień. W łatwy sposób taki "rejestr", lub jego część, może przenieść na inną maszynę, gdzie chce korzystać z podobnych ustawień, bo to zwykłe kopiowanie pliczków. Szczerze mówiąc nie wiem, jak takie coś sprawnie zrobić w windowsie bez dodatkowych narzędzi, a nie używam windy od roku... Trzymanie ustawień w jednym pliczku jest niebezpieczne. Wyobraź sobie bad sector w tym pliczku ;) w /etc stracisz co najwyżej ustawienia czegoś tam, a nie całego systemu. Poza tym, @_qaz7 powiedział o wygodzie korzystania z rejestru wystarczająco dużo...

micko   8 #39 03.01.2011 13:38

@command-dos
1) Dla ścisłości rejestr to nie jest "jeden pliczek", ale kilka plików przechowywanych głównie w /Windows/System32/Config, choć również w profilu użytkownika
2) Są to pliki BINARNE co pociąga za sobą fakt, iż dostęp do nich ze strony użytkownika jest utrudniony. Osobiście wygląda mi to na niezbyt udaną "akademicką" optymalizację. Teoretycznie przetwarzanie plików binarnych jest szybsze niż tekstowych, ale ostateczny bilans zysków i strat jest raczej ujemny.
3) Rejestr można edytować za pomocą zwykłego edytora tekstowego, ale jest to kłopotliwe. Robi się to według schematu eksport->edycja->import. Oczywiście potrzebne są do tego narzędzia takie jak regedit, choćby w trybie konsoli.
Najwygodniej grzebie się w rejestrze skryptami PowerShell, tylko trzeba choć trochę znać jego strukturę
4) Struktura rejestru jest masakryczna. Sadzę, iż miało być zgodnie z wszelkimi kanonami sztuki, a wyszło jak zawsze. Osobiście doszukuję się w tym podobnej myśli jak w przypadku WinAPI, które jest szczytową formą "barokowej" notacji węgierskiej. Najlepiej scharakteryzował ją Linus Torvalds mianem "brain damaged", choć w językach z dynamicznym typowaniem bywa pomocna. Podobnie jest z rejestrem. Krótko mówiąc sztuka dla sztuki. Nie zdziwił bym się jakby palce maczał w tym Charles Simonyi.

micko   8 #40 03.01.2011 13:43

PS. Można zaryzykować stwierdzenie, że bez butelki Tokaju (albo całej beczki), rejestru nie da się ogarnąć i zrozumieć.

webnull   9 #41 03.01.2011 16:29

@micko
"1) Dla ścisłości rejestr to nie jest "jeden pliczek", ale kilka plików przechowywanych głównie w /Windows/System32/Config, choć również w profilu użytkownika"

Co nie zmienia faktu, że wciąż jest to baza danych która łatwiej ulega uszkodzeniom.

Dlaczego Microsoft zatem nie zdecydował się na jakieś sprawdzone rozwiązanie jak bardzo lekkie SQLite czy troszkę bardziej ciężki MS SQL Server?
Dzięki bazy danych można by mieć dostęp do takiego "rejestru" systemu z prawie każdej aplikacji bez żadnych dodatkowych problemów, po co tworzyć koło na nowo?

"Najwygodniej grzebie się w rejestrze skryptami PowerShell, tylko trzeba choć trochę znać jego strukturę"

PowerShella uczę się wciąż, jednak jego składnia mnie przeraża - głównie te dziwaczne i długie nazwy podstawowych poleceń "Set-Location" oczywiście istnieją aliasy które likwidują ten problem ale szczerze mówiąc po co oryginalnie tak długie nazwy.

"Struktura rejestru jest masakryczna."

Zgodzę się, o wiele lepiej wypada tutaj /etc z Uniksów, lecz to też ma Swoje wady które także da się wyeliminować - chodzi Mi o twierdzenie, że na dysku twardym powinno się oddzielać tą "masę" drobnych plików konfiguracyjnych od dużych danych dlatego można /bin, /sbin, /etc trzymać na jednej partycji a resztę na innych partycjach ;-)

gniemirowski   5 #42 03.01.2011 18:09

@micko: od dziesięciu lat nie widziałem padu rejestru ani nie słyszałem, żeby ktoś miał z tym problem. Nieład w rejestrze jest dla mnie taki sam jak w /etc. Nie ma chyba jednego miejsca, w którym byłoby opisane /etc. Dla rejestru taka dokumentacja jest. Wydaje mi się, że dla laika /etc nie jest dużo mniej skomplikowane niż rejestr. Nie widzę też różnicy jeśli chodzi o eksport na inny komputer, w jednym i drugim przypadku sprowadza się to do kopiowania plików.

@webnull: ależ to jest bardzo lekka baza, ciągle przechowywana w pamięci i dostęp do niej z aplikacji jest prosty, każdy język ma do niej API, nie mam pojęcia co by miała dać baza SQLowa.

webnull   9 #43 03.01.2011 19:30

@gniemirowski
Jak robiłeś tak zwany "format" kilka razy w roku to rejestr nie miał czasu aby "się zepsuć" ;-)

gniemirowski   5 #44 03.01.2011 19:58

@webnull: ja nie z tych co reinstalują co tydzień z byle powodu :) Windows instaluję raz na kilka lat.

webnull   9 #45 03.01.2011 21:21

@gniemirowski
Trudno w to uwierzyć mając negatywne doświadczenia z windowsem.

Pamiętam kiedyś miałem dziwnego backdora który przetrwał przeflashowanie biosu i wyczyszczenie mbr oraz sformatowanie dysku twardego.

Instalacja windows xp (wtedy był najnowszy), zainstalowane antywirusa, firewalla, podłączenie do internetu - backdoor wraca.

Do dzisiaj pamiętam, jak wujek odłączył Mi przypadkowo komputer z gniazdka, po włączeniu windows się już nie uruchomił - musiałem go ponownie zainstalować.

W zasadzie przez tego backdoora instalowałem windowsa codziennie od nowa.

  #46 03.01.2011 22:02

micko:'Osobiście wygląda mi to na niezbyt udaną "akademicką" optymalizację.'

pozostaje sprawdzić sobie - właśnie wyeksportowałem z XP klucz HKLM do pliku textowego - w wyniku dostałem plik ważący 94MB z łączną liczbą 839tyś linijek. Można sobie teraz pospekulować, czy szybciej jest czytać/pisać do rejestru zorganizowanego jako prosta baza danych, czy jego odpowiednika w hierarchicznej strukturze katalogów i plików gdzie ich łączna liczba wyniosła by 143tyś (tyle mam kluczy i podkluczy). te kosmiczne liczby wpisów trochę wyjaśniają, czemu rejestr jest w takiej a nie innej formie, i czemu pachnie to burdelem.

micko   8 #47 03.01.2011 22:13

@gniemirowski
Ja osobiście nigdy nie doświadczyłem nieprzyjemności ze strony rejestru, choć znam takie przypadki. Zawsze wynikały one jednak z braku elementarnej higieny pracy czyt. użytkowanie tysiąca dziwnych programów z niepewnych źródeł.

Nie zmienia to jednak mojego zdania, iż struktura rejestru jest raczej mało przejrzysta ( przynajmniej to co widzi użytkownik). Przy projektowaniu rejestru raczej nie brano pod uwagę zasady "Code speaks to you" (choć ona dotyczy raczej kodu źródłowego). Główne zarzuty z mojej strony to:
1) Nazwy gałęzi są mało intuicyjne np. S-1-5-19
2) Mnogość różnych typów danych, które pewnie dałoby się zredukować do zwykłych stringów i ich tablic
3) Brak komentarzy

Skoro rejestr można importować/eksportować do pliku w formacie INI (pliki reg), to dlaczego nie mógłby on leżeć sobie spokojne w takiej właśnie formie w określonym katalogu. I to nie jako jeden wielki 200 MB plik tekstowy, ale np 20 mniejszych.
Zapewne rozwiązanie, które przyjęto wynika z dbałości o wydajność, ale marzyłby mi się dostęp taki jak np. do konfiguracji GITa, w którym parametry konfiguracyjne można ustawiać z linii poleceń np.
git config user.name "user"
ale też modyfikując plik konfiguracyjny w dowolnym edytorze tekstowym.

Takie tam polskie narzekanie :)

AndrzejG   10 #48 04.01.2011 00:13

Czytam sobie tą licytację w komentarzach i doszedłem do wniosku, że tytuł posta powinien brzmieć: cz. 2 | W Uniksach DLA MNIE to prostsze. Serio.

gniemirowski   5 #49 04.01.2011 00:24

@micko: z komentarzami to racja, trochę ich brakuje. Natomiast co do dziwnych nazw gałęzi to to już nie jest kwestia rejestru, jak ktoś się uprze na dziwne nazwy to jest zastosuje też w plikach tekstowych i nic go nie powstrzyma :)

command-dos   18 #50 04.01.2011 07:12

@gniemirowski - zazwyczaj chodzi o to, że programy ładują do rejestru nie wiadomo co i gdzie, zgadzasz się? Dajmy na to, instaluję sobie program o nazwie "test". Gdzie mam szukać kluczy, w której odnodze? Nie wiadomo, co program podczas instalacji w rejestrze namiodził. W Uniksie przyjęto, że program "test" trzyma swoje ustawienia w /etc/test. Wchodzę, modyfikuję za pomocą notatnika (po co jakiś regedit?), jak mi się uwidzi, to może to być nawet notepad.exe, z zupełnie innej maszyny, zapisuję pliczek i po zabawie. Dlatego wolę, jak program "test" pod windows ma ustawienia w pliczku *.ini - serio. Zauważyłem to już x lat temu, kiedy Ubuntu jeszcze w planach nie było. Dla mnie prościej, czytelniej, a co najważniejsze, mogę ustawienia tego programu skopiować na pena i zastosować na drugim komputerze bez zbędnych ceregieli - zwyczajnie wgrywając pliczek...

Ryan   15 #51 04.01.2011 09:35

@micko: Rejestr nie jest dla użytkownika a dla programisty. W typowych zastosowaniach interesować programistę powinna tylko gałąź Software/FirmaProgramisty/Program/Wersja w HKCU i HKLM i nic ponadto. Przykład klucza, który podajesz, to security identifier i jego budowa nie ma nic wspólnego z rejestrem. To zakodowany ACL (w podanym przypadku local service). Jeśli się rozumie architekturę bezpieczeństwa Windowsa, to takie coś czyta się naturalnie (podobnie jak np. atrybuty plików w Linuksie).

Rejestr nie jest trzymany w postaci czystego tekstu z kilku powodów. Po pierwsze: musi się wczytywać szybko. Po drugie: musi zajmować mało miejsca. Pliki rejestru są replikowane na partycji by zapewnić ochronę przed utratą danych. Rozbicie rejestru na wiele plików doprowadziłoby do silnej fragmentacji zewnętrznej danych i zwiększyło zapotrzebowanie na miejsce i czas odczytu, tym samym niwelując jakiekolwiek zyski płynące z centralnego repozytorium konfiguracji systemu.

Generalnie sugeruję wstrzemięźliwość w ocenie rzeczy, których się nie zna dobrze. ;) Rejestr idealny nie jest. Ale masa przypisywanych mu cech od czasów Win95 niespecjalnie pokrywa się z rzeczywistością. :]

gniemirowski   5 #52 04.01.2011 12:58

@command-dos: jest tak samo proste i logiczne, dane per-user są trzymane w HKEY_CURRENT_USER\Software\test a per-system w HKEY_LOCAL_MACHINE\SOFTWARE\test. Jeśli jakiś programista tego nie przestrzega to jest to jego wina. Równie dobrze programista linuksowy może sobie wymyślić dziwną lokalizację. Ustawienia z rejestru można tak samo wyeksportować na pena i potem importować. Import jest nawet prostszy bo sprowadza się do dwukliku na pliku.
Nadal więc podtrzymuję swoją tezę, że generalnie i tak wychodzi na to samo :)

webnull   9 #53 04.01.2011 14:36

@gniemirowski (redakcja)
No dobrze, to proszę Mi wskazać pakiet w dowolnym oficjalnym repozytorium dowolnej dystrybucji który by robił bałagan - tworzył różne pliki konfiguracyjne w różnych katalogach w /etc

Trudno by było znaleźć taki pakiet prawda? Ja sądzę że takowego niema, bo każdy tworzy Swoją konfigurację w /etc/nazwapakietu/

Jednak w Windows to jest bardzo częste, że nawet po odinstalowaniu aplikacji "ślady" po niej zostają w bardzo wielu gałęziach rejestru.

Odnośnie szybkiego ładowania, to jakim problemem jest załadowanie pliku maks. 10 kb podczas uruchamiania jakiegoś serwera np. lighttpd, praktycznie żaden - jaka może być strata na wydajności.

Poza tym teoretycznie dla podwyższenia wydajności możemy wydzielić katalog /etc na inną partycję.

gniemirowski   5 #54 04.01.2011 15:35

@webnull: nie zrozumiałeś :) Napisałem, że jest to kwestia programisty a nie tego czy ustawienia są w plikach tekstowych czy rejestrze. Pod Linuksem sytuacja wygląda dobrze nie dlatego, że jest tam katalog /etc bo to magicznie niczego nie zmienia. Jest OK właśnie dzięki pakietom, dzięki temu, że maintainerzy paczek pilnują tego gdzie program ma swoje pliki. Pilnowana jest spójność i zależności. Pisząc program na Windows mogę ustawić trzymanie plików w dowolnym miejscu do którego mam uprawnienia i nie ma żadnego opiekuna paczki, który by mnie zdyscyplinował. Jest przecież sporo programów pod Windows, które trzymają ustawienia w plikach tekstowych ale w głupich miejscach, np. C:\Windows albo C:\Program Files co w pierwszym przypadku robi bałagan a zarówno w pierwszym jak i drugim sprawia, że dla użytkowników niepracujących na koncie administracyjnym konfiguracja staje się tylko do odczytu.
Jest jeszcze jedna sprawa. Ciągle mówimy o /etc ale to wcale nie tam są trzymane ustawienia dla użytkowników. Oni mają swoje konfiguracje w swoich katalogach domowych. I z tego co wiem to nie ma tu jakiegoś standardu. Jedne pliki leżą bezpośrednio w katalogu domowym, inne mają podkatalogi konkretnych programów. I generalnie są wymieszane z plikami z danymi. Przynajmniej jeśli konto jest tylko shellowe. W przypadku gdy mamy jakieś KDE czy GNOME to tam są tworzone podobnie jak na Windows katalogi Dekstop czy Documents i jest trochę większy porządek. Pod Windows na ustawienia użytkownika jest katalog Dane aplikacji. Z tym, że też nie ma niczego co by wymuszało jego używanie. Być może uzyskanie loga Certified for Windows wymusza przestrzeganie tego. W każdym razie brak systemu pakietów i wolna ręka dla programistów zwiększa burdel i moim zdaniem nie jest to kwestia rejestru. Są co prawda paczki MSI ale każda zyje sobie własnym zyciem i nie są one weryfikowane, każdy może sobie wygenerować pakiet MSI. Trzeba też pamiętać, że samo /etc nie ma jakiejś sztywnej struktury i różnie wygląda pod różnymi dystrybucjami.

webnull   9 #55 04.01.2011 16:16

@gniemirowski (redakcja)
W katalogu domowym owszem aplikacje tworzą drobne ukryte pliki bądź własne katalogi z większymi plikami konfiguracyjnymi.

Dla przykładu mogę podać ~/.bashrc czy ~/.bash_history, ~/.xinitrc, ~/.htoprc, ~/.gtkrc-2.0

U mnie żadna aplikacja nie utworzyła bałaganu w katalogu domowym, a powyższe przykłady związane są z ważnymi aplikacjami w systemie.
Żadna przeciętna aplikacja nie pełniąca ważnej roli w systemie nie tworzy od tak plików w katalogu domowym - od tego ma Swój katalog.

W dodatku w Uniksach panuje zasada KISS (Keep It Simple Stupid), nie muszę instalować programów typu "Music Player Config Editor" czy innego aby edytować pliki konfiguracyjne - są one przejrzyste, zrozumiałe, i napisane powszechnie używanymi językami czyli XML, składnia podobna do basha, ini.

Mogę podać takie przykłady standaryzacji plików konfiguracyjnych:
- smplayer (ini)
- thunar (ini)
- lxpanel (ini)
- openbox (xml)
- gmpc (ini)
- xarchiver (ini)
- lxterminal (ini)
- vlc (ini)
- evolution (ini)
- chromium (sqlite)
- gedit (ini)

Jak w Windowsach wyglądają pliki konfiguracyjne?
Są często w nieznanych nikomu formatach stworzonych na potrzeby formatu, pytanie tylko po co komu tworzyć nowy format danych?

webnull   9 #56 04.01.2011 16:20

@gniemirowski (redakcja)
"Trzeba też pamiętać, że samo /etc nie ma jakiejś sztywnej struktury i różnie wygląda pod różnymi dystrybucjami."

/etc podobnie jak jądro jest sercem każdej dystrybucji.
Czy to Arch Linux, Gentoo czy Debian każdy posiada dokładną dokumentację /etc.

Katalog /etc jest w dodatku w niewielkim stopniu modyfikowany przez różne dystrybucje - głównie sposób zmiany języka, czcionki konsoli, menadżera pakietów, uruchamianych demonów przy starcie systemu a reszta pozostaje prawie identyczna w każdej dystrybucji.
Dystrybucje ingerują głównie tylko w najważniejsze pliki konfiguracyjne, także reszta pozostaje normalnie.

  #57 04.01.2011 22:16

@command-dos | 03.01.2011 6:37 :
Teoretycznie rejestr jest w wielu przypadkach lepszy. W rejestrze w teorii jest mniejszy bezład niż w /etc . W /etc/ każdy pliczek może mieć oddzielny format i brakuje kontroli danych - nie ma wymuszania typów - plik tekstowy każdy może sobie edytować. W praktyce jednak rejestru trudniej jest się nauczyć, a do tego chyba /etc/ jest lepsze.
Dokładnie. Rejestr stwarza zagrożenie dla systemu.
Natomiast import rejestru/części, to nic nadzwyczajnego.

Po prostu w Uniksach jest wszystko znacznie bardziej logiczne, przez co łatwiej się tego nauczyć, przyswoić, i wykorzystać do dowolnych, nieprzewidzianych przez autorów aplikacji celów. Stąd oczywistość sposobu importu/eksportu /etc, itd. Rejestr nie jest widoczny przez normalnego usera i pewnie przez dobrego admina, jako system plików. I tutaj rodzi się problem - bo, by wykonać tak łatwą czynność musimy lepiej poznać ten rejestr i system.

  #58 04.01.2011 22:18

@micko | 03.01.2011 13:38 :
Ładnie to wszystko scharakteryzowałeś.

  #59 04.01.2011 22:25

@gniemirowski (redakcja) | 04.01.2011 0:24 :
Dobrym przykładem lepszego podejścia do zaprojektowania rejestru ze strony użytkownika/administratora jest GConf. Odpowiednie klucze mają swój opis/komentarz.

  #60 08.01.2011 17:56

Jeżeli chodzi o to by mieć D&S lub folder Users w Windowsie to najprościej (według mnie) PPM kliknąć w Menu Start lub gdziekolwiek indziej folder Dokumenty (ogólnie skrót utworzony automatycznie przez system) i Właściwości. Dalej w jakiejś zakładce z polem z ścieżką podać gdzie ma byś D&S lub Users. I gotowe. Zauważyłem to z pierwszym razem jak bawiłem się na starym kompie (win'98) dawno temu :D. Ciekawe że przez tyle lat tak mało widocznych zmian się odbyło (no może poza skórką i dodatkowymi sterami)

webnull   9 #61 08.01.2011 20:41

@Ktosios
Dzięki, na pewno się przyda.