Migracja z Windows/Linux na Linux

Poniżej opisane są najważniejsze rzeczy które należy wziąć pod uwagę przy przenoszeniu systemu z Windows/Linux na Linux.

Migracja będzie wymagać:

  • skopiowania plików systemu C:\Program Files\BetaSoft\eDokumenty\public_html do /home/edokumenty/public_html,
  • eksportu bazy
pg_dump -U postgres -f edokumenty.sql edokumenty

  • importu bazy na Linux

psql -U postgres -f edokumenty.sql edokumenty

  • ustawienia właściwych praw do pliku (opisane w innym miejsu wiki)
  • przeniesienia plików katalogu files
  • przeniesienia plików repozytorium SVN, które jest szerzej opisane poniżej.

Czynności wstępne

Proces migracji danych na system Linux należy rozpocząć od przygotowania środowiska, czyli zainstalowania Apache'a, PHP, PostgreSQL oraz innych bibliotek w odpowiedniej wersji. Problem ten opisuje odpowiedni artykuł.

Migracja katalogu public_html

Jeżeli posiadamy przygotowany system, należy w pierwszej kolejności przekopiować system eDokumentów, czyli całego katalog public_html. Z poziomu Windows-a można wysłać z poziomu "starej" maszyny na nowy serwer przez SSH (używając narzędzi graficznych np. FileZilla, WinSCP lub innych). Pliki należy wrzucić do katalogu /home/edokumenty/ nadpisując istniejący katalog public_html.

Zanim jednak rozpoczniemy prace, to sugeruje się, aby wyczyścić katalog public_html/apps/edokumenty/var/tmp na dotychczasowym serwerze edokumentów. Znajdują się tam pliki tymczasowej, których kopiowanie nie ma sensu.

Jeżeli migrujemy z linuksa to z dowolnej maszyny możemy wykorzystać polecenie rsync (jako użytkownik root) np.

rsync -azP root@10.0.0.5:/home/edokumenty/public_html/ /home/edokumenty/public_html

W powyższym przykładzie kopiowanie odbywa sie konsoli "nowej" - docelowej maszyny, z której polecenie rsync pobiera dane. Należy pamiętać o ustawieniu po skończonym procesie uprawnień do katalogów :

  • public_html
  • files
  • maildir
  • repos
  • repository

Po przekopiowaniu systemu należy przejść dalej do kopiowania plików i repozytorium

Kopiowanie plików

Kopiowanie plików należy wykonać korzystając z narzędzia rsync:

rsync -azP root@10.0.0.5:/home/edokumenty/files/ /home/edokumenty/files

Kopiowanie może zająć nieco czasu :-)

Przenoszenie repozytorium

Na Windows przed wykonaniem zrzutu sprawdzamy integralność repozytorium funkcją "Narzędzia > Integralność repozytorium" Co się da naprawiamy z eDokumenty. Resztę można ręcznie:

su - www-data
cd /home/edokumenty/
mkdir repository

Następnie patrząc na listę

  • te pliki które mają poczatek od ? dodajemy do repozytorium czyli svn add <file>
  • te które maja literkę A zatwierdzamy czyli comitujemy svn ci -m "" <file>

Następnie wykonujemy zrzut:

@set edok_dir=C:\Program Files\BetaSoft\eDokument
svnadmin dump "%edok_dir%\repo" > repos.dump

Następnie kopiujemy plik repos.dump na serwer z Linux i umieszczamy w katalogu /home/edokumenty. Następnie umożliwiamy chwilowy zapis użytkownikowi www-data do katalogu /home/edokumenty i przechodzimy na usera www-data i zakładamy repozytorium:

#chmod o+w /home/edokumenty
#su - www-data
$cd /home/edokumenty
$svnadmin create repos

Następnie nadal z użytkownika www-data zaimportujemy pliki do repozytorium.

cd /home/edokumenty
svnadmin load repos < repos.dump

W tym momencie powinny pojawiać się komunikaty z polecenia load, zatwierdzam wersję 1, 2, 3... itd. Następnie możemy pobrać zawartość repozytorium do lokalnej kopii umieszczonej w sąsiednim katalogu /home/edokumenty/repository. Wykonujemy to poleceniem checkout (w skrócie co).

cd /home/edokumenty/repository
svn co file:///home/edokumenty/repos .

Polecenie to pobiera do katalogu /home/edokumenty/repository zawartosć bazy SVN.

Polecenie powinno zwracać dla każdego dodawanego pliku informację Pobieram 2009/09...

W efekcie listując zawartośc repository widzimy katalogi 2008, 2009, 2010 itp.

Jeżeli na źródłowym serwerze po wpisaniu komendy pojawią się nie zkomitowane dokumenty

su - www-data
cd /home/edokumenty/reposioty
svn st

Widok nie zkomitowanych dokumentów repozytorium

#widok dla Linux
/home/eDokumenty/repository>svn st
M       2015\12\23\file_1676.txt
?       repos

#widok dla Windows
C:\www\eDokumenty\repository>svn st
M       2015\12\23\file_1676.txt
?       repos

Należy przed przeniesieniem plików wykonać polecenie usunięcia plików .svn

# Wyszukiwanie
find . -name .svn

# Usuwanie
find . -name .svn -type d -print0 | xargs -0 rm -r --

GOTOWE! Gratulacje dobrej decyzji.

Ps. Dla posiadaczy starszych wersji systemu < 2.0 należy zwrócić uwagę czy struktura katalogów zaczynała się od repository_2 czy samo repository i odpowiednio zmodyfikować ścieżki.