Thursday 24 December 2009

Przeniesienie zainstalowanego systemu Windows Vista / 7 na nowy dysk

Stanąłem przed problemem wymiany dysku w laptopie na nowy większy. Problem polegał na tym, że ani nie chciałem reinstalować wszystkiego od początku ani użyć jakiegoś komercyjnego rozwiązania w stylu Norton Ghost itp.

Przyjrzałem się wbudowanemu w Vistę narzędziu do backupu systemu "Centrum kopii zapasowych i przywracania" jednak najciekawsza opcja tego narzędzia "Windows Complete Backup and Restore" nie pozwala w trybie kreatora na wykonanie tego backupu na udostępniony w sieci zasób lub dysk a jedynie na lokalne dyski lub nagrywarkę.

Przyjrzałem się więc jeszcze bliżej tym razem opcjom linii poleceń tego narzędzia "wbadmin" i okazało się, że jednak można :-)

Przykładowe odpalenie kompletnego backupu laptopa z zapisem na zasób w sieci:
wbadmin start backup -allCritical -backupTarget:\\server\share -include:C: -vssFull -user:server\username -password:pass

Procedura odtworzenia wyglada trochę inaczej bo należy:

1. Zbotować komputer z krążka Windows Vista CD

2. Wybrać opcję "napraw komputer"

3. Po uruchomieniu kreatora pomimo iż w menu jest opcja odtworzenia kompletnego backupu to nie pozwala ona na odtworzenie go z sieci więc wybieramy "wiersz polecenia"

4. Potrzebujemy sieci więc czas by ją wystartować zatem wpisujemy polecenie startnet.cmd - to włączy nam sieć pod warunkiem iż mamy w sieci serwer dhcp - jeśli nie mamy to dodatkowo można skonfigurować tcpip przy użyciu polecenia netsh

5. Tu możemy zamapować dysk sieciowy z którego chcemy odczytać backup:
net use i: \\server\share /USER:server\username
choć jest to zbędne bo i tak wskazujemy bezpośrednio zasób sieciowy

6. sprawdzamy co mamy do odtworzenia:
wbadmin GET VERSIONS -backupTarget:\\server\share

7. Zapisujemy sobie identyfikator naszego backupu np. 12/23/2009-06:58

8. Uruchamiamy odtwarzanie pełnego backupu:
wbadmin START SYSRECOVERY -backupTarget:\\server\share -version:12/23/2009-06:58 -recreateDisks

9. Potwierdzamy wykonanie polecenia "t" i czekamy na zakończenie operacji...

10. Profilaktycznie na koniec restartujemy ponownie komputer także z krążka Windows VISTA CD i wykonujemy
chkdsk /r

11. Notujemy ewentualne problemy z plikami a gdyby jakieś wystąpiły zawsze można dodatkowo te pliki podkopiować tak z oryginalnego dysku lub też z podmontowanego obrazu naszego backupu - jest on bowiem w formacie VHD (całkiem analogicznym jak obraz wirtualnego systemu dla Virtual PC) i można go sobie podmontować poleceniem "vhdmount" które jest dostępne po zainstalowaniu pakietu "Microsoft Virtual Server" (niestety nie ma go w pakiecie "Microsoft Virtual PC")

Procedura backupu 146GB trwała około 7 godzin a odtwarzanie połowę krócej tak więc nocka jest najlepszym mozliwym momentem na jej wykonanie - my śpimy a pecet pracuje... ;-)

Sunday 29 November 2009

Poiplaza full country POI download spider

Siadłem dziś rano do kompa odrobinę "poandrzejkowy" chcąc zaktualizować sobie poi'e z PoiPlaza i z wrodzonego mi twórczego lenistwa postanowiłem że nie będę jak ten ostatni osioł klikać link po linku ściągając po kolei te poi'e. Napisałem więc kawałek kodu w php który buszuje trochę po PoiPlaza i podaje to prawie gotowe jak na tacy :lol:

Jeśli ktoś chce to sobie odpalić na windzie z linii poleceń to można np. tak:

c:\PHP>php-cgi.exe poiplaza.php >poiplaza.htm

później otworzyć gotowe poiplaza.htm w przeglądarce albo też wystawić sobie na stronkę pod apacza czy iis'a ten skrypt poiplaza.php i kliknąć przeglądarą ;-)

W aktualnym kodzie zasysam Polskę i poi'e dla iGo8 niemniej dwoma kliknięciami można zmienić na dowolny inny kraj czy inną wersję poi na inna nawigację.

Poniższy kod jest trochę zniekształcony przez koloryzator składni i zacytowałem go tutaj wyłacznie poglądowo dlatego też działający kod trzeba pobrać z mojego chomika: http://chomikuj.pl/saphireee/nawigacja/programiki/poiplaza.zip
<?php
// (c)2009 Bartek 'saphire' Siebab
//
// remember: increasese enough php execution time in php.ini
// this script lasts loooongggg... 
// becouse plenty pages has to be opened and parsed...
//
  $country=32; // 32=Poland - get this from url of choosen country 
  $target='[iI][gG][oO]8';//igo8 partly regexp

  $download='http://www.poiplaza.com/';
  $url='http://poiplaza.com/index.php';

  $countryurl=$url . '?p=dc&c=' . $country;
  $poipageurl=$countryurl . '&lpg=&d=&pg=';

  $crlf=chr(13).chr(10);  

// now lets do this  
  $countrybody=http_parse_message(http_get($countryurl))->body; 
  
  preg_match('/ \d*[ ]*[\/][ ]*\d* [ ]*/',$countrybody,$matches );
  $pages=explode("/",str_replace(' ','',str_replace(' ','',$matches[0])));
  $minpage = $pages[0];
  $maxpage = $pages[1];
  
  $n=0;
  for ($pg=$minpage; $pg<=$maxpage;$pg++) {
    $poipagebody=http_parse_message(http_get($poipageurl . $pg))->body;
    preg_match_all('/\<a href\=\"\?p\=sdb&d\=\d*\&lstpg\=ds\&lsts\=\_LSTS\_\"\>.*\<\/a\>/',$poipagebody,$matches );

    $i=0;
    foreach ($matches[0] as $key => $value) {
      preg_match_all('/\d*/',$value,$poiurl);
      
      $poiid = $poiurl[0][18]; // in 18th field is poi id
      $poiadr = $url . '?p=download&d=' . $poiid . '&lstpg2=sdb&lstpg=ds&lsts=_LSTS_';
      
      $n++; // lets create table with poiid and poiurl
      $poi[$n][0] = $poiid;
      $poi[$n][1] = $poiadr; 
      //print $poi[$n][0] . ' # ' . $poi[$n][1] . ' <br> ';
      
      $i++;      
    } // end of foreach loop
  } // end of for loop 

// now clear some useless variables
unset($poiid);
unset($poiadr);
unset($countrybody);
unset($poipagebody);
unset($matches);

// *************************************************************************
print $crlf;
print '<html><title>Poiplaza full country POI download spider (c)2009 Bartek \'saphire\' Siebab</title><body>'.$crlf;
print '<b>Poiplaza full country POI download spider (c)2009 Bartek \'saphire\' Siebab</b><br><br>' . $crlf;
print 'Country id: ' . $country . ' found '.$n.' POI\'s<br><br>'. $crlf;

  // now lets loop and open every poi page
  for ($pg=1; $pg<=$n;$pg++) {
    //print $poi[$pg][1];
    $poipagebody=http_parse_message(http_get($poi[$pg][1]))->body;
    $linkregexp='/download\/zipfiles\/\d*\/.*' . $target . '[.][zZ][iI][pP]/';
    preg_match($linkregexp,$poipagebody,$matches);
    $poireadyurls[$pg]=$matches[0];
  } // end of for loop

  // now lets make a plain text show
  print 'Ready copy & paste box:<br><br><code>'.$crlf;
  for ($pg=1; $pg<=$n;$pg++) {    
    print($download . $poireadyurls[$pg] . '<br>'. $crlf);
  } // end of for loop
  print '</code><br><br>'.$crlf;

  // now lets make a href show
  print 'Clickable url\'s box:<br><br>'.$crlf;
  for ($pg=1; $pg<=$n;$pg++) {    
    print('<a href="'.$download . $poireadyurls[$pg] .'">'.$download . $poireadyurls[$pg].'</a><br>'. $crlf);
  } // end of for loop
  print '<br>'.$crlf;
  
print '</body></html>'.$crlf;
// again clear some variables
unset($poipagebody);
unset($matches);
unset($poireadyurls)
?>

Tuesday 28 July 2009

Kurs Administracja Serwerem PostgreSQL

Ostatnio miałem okazję uczestniczyć w kolejnym szkoleniu - tym razem z administracji serwerem bazodanowym PostgreSQL ;-)

Friday 16 January 2009

Projekt ESKS

Od 2006r intensywnie pracowałem wspólnie z kilkoma kolegami nad nowym dużym projektem informatycznym dla Służby Celnej RP. System "ESKS - Ewidencja Spraw Karnych Skarbowych" początkowo mały i działający w obrębie Izby Celnej w Przemyślu z czasem rozrósł się bardzo i okazał się na tyle przydatny że ostatecznie został dofinansowany ze środków Funduszy Unijnych (zakup odpowiedniego sprzętu IT). Na początku stycznia 2009r system Zarządzeniem Ministra Finansów został uruchomiony i wdrożony w całej Polsce. Jako współautora systemu tym bardziej cieszy mnie powodzenie tego projektu systemu informatycznego. System został opracowany w oparciu o Open Source - PostgreSQL, OpenRPT oraz inne komponenty np. PostgresDAC, EMS SQLManager itp.

Dodatkowe informacje:
Projekt ESKS - IC Przemyśl
Gazeta Prawna - artykuł 1
Gazeta Prawna - artykuł 2