Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   GNU/Linux - skrypt wykonujący kopię serwera WWW (https://forum.cdrinfo.pl/f113/gnu-linux-skrypt-wykonujacy-kopie-serwera-www-94265/)

M@X 14.02.2015 09:31

GNU/Linux - skrypt wykonujący kopię serwera WWW
 
Mam nastepujacy problem - co jakis czas zmuszony jestem ze wzgledow bezpieczenstwa wykonywac kopie zapasowa serwera WWW. W tej chwili wyglada to tak:

Wybudzam komputer, wlaczam ForkLift, lacze sie przez FTP z serwerem, zaznaczam wszystko i przerzucam zawartosc na jeden z udzialow na dysku WD MyBook Live DUO.

Poniewaz jednak NAS WD jest wlaczony caly czas a w srodku siedzi jakis Linux chcialbym zautomatyzowac proces i wykluczyc z niego uzywanie komputera.

Czy zatem bylby ktos tak mily i podpowiedzial mi jak napisac skrypt ktory wykona:

1. Polaczenie przez FTP na porcie 21 z konkretnym loginem i haslem do serwera.
2. Wybierze cala zawartosc glownego katalogu tj. wszystkie pliki i foldery z zawartoscia.
3. Skopiuje je do /shares/Library/Backup.

Fajnie byloby tez gdyby generowal jakis LOG w konkretnej lokalizacji by przejrzec czy podczas pobierania nie bylo bledow. Do init.d juz sobie sam dodam :-).

andy 14.02.2015 09:45

Jeżeli masz dostęp do roota na tym serwerze to zrób to przez rsync'a.

rsync łączy się po ssh z serwerem docelowym i przy użyciu protokołu rsync robi kopie danych. Działa to zdecydowanie szybciej niż sposób wyżej, bo rsync wysyła tylko zmienione dane, natomiast w przypadku ftpa za każdym razem wysyłasz całość.

Można też*wykorzystać coś bardziej gotowego - np. rsnapshot http://www.rsnapshot.org
Tutaj jest manual http://www.rsnapshot.org/howto/1.2/r...-HOWTO.en.html

M@X 14.02.2015 09:55

Musialbym sie doktoryzowac z tego tematu, czytac co to jest rsync, a co najgorsze pewnie - doinstalowywac go do NASa, a tego chcialbym uniknac. Chce to zrobic jednym skryptem na juz istniejacych poleceniach systemowych.

andy 14.02.2015 09:57

Nie trzeba się*doktoryzować - wystarczy umiejętność czytania ze zrozumieniem.
http://www.smallnetbuilder.com/nas/n...d-my-book-live

Oprócz czystego rsynca, rsnapshota można użyć jeszcze BackupPC http://pl.wikipedia.org/wiki/BackupPC

Nie wiem tylko czy da się*go zainstalować*na tym nasie.

Bartez 16.02.2015 21:04

Jak najbardziej rsync. Cały backup na cdrinfo mamy oparty o rsynca i działa to wyśmienicie. W synology rsync jest wbudowany, więc nic nie trzeba doinstalowywać, może w WD też tak jest.

M@X 16.02.2015 21:20

:bartez:, a moglbys mi podac linijke jaka mam to uczynic? Probowalem, ale sypie bledami :-/

Berion 16.02.2015 21:23

Jaka jest ich treść?

M@X 16.02.2015 21:47

Problem lezy w wymogu opisanym przez andy'ego - nie mam dostepu do roota.

Zrobilem przez dwie komendy:

cd /shares/Library/Backup/WWW
wget --mirror --ftp-user=login --ftp-password=password --no-host-directories ftp://ftp.server.com

Jak teraz zrobic z tego skrypt i wlaczyc tworzenie loga ktory w nazwie bedzie mial date operacji?

andy 16.02.2015 21:48

Przecież*zamieściłem linka w którym jest opisane jak go skonfigurować na WD.

M@X 16.02.2015 21:49

Pisales o roocie na serwerze a nie na MBLD. To raczej, w ujeciu logicznym, dwie rozne sprawy.

andy 16.02.2015 22:04

Z rootem chodziło mi o serwer docelowy..

sciadzieda 20.02.2015 19:10

Koledzy mówią o backupie, a ty chcesz zwykłą, prostą kopię. To co innego.

Na lokalnej maszynie wykonujesz takie polecenie (i to wszystko!):

Kod:

ssh user@server 'cd ~/katalog_serwera; tar cf - .' |  tar xf -
W bieżącym katalogu maszyny lokalnej pojawią się pliki z serwera.

Omówienie:
- polecenie ssh loguje się do zdalnej maszyny
- polecenie cd zmienia katalog na ten z którego chcesz skopiować pliki
- polecenie tar cf - . (myślnik i kropka) tworzy tarballa, po to aby go szybko skopiować (tak jest najszybciej)
- polecenie tar xf - rozpakowuje tarballa na maszynie lokalnej

Aby powyższe polecenie zadziałało bez hasła (czyli ze skryptu, z crona) musisz przed jego wykonaniem umożliwić logowanie do zdalnej maszyny za pomocą kluczy publiczny-prywatny.

Na localu generujesz klucze
Kod:

ssh-keygen -t rsa
Wciskasz Enter, Enter aby utworzyć klucze bezhasłowe.

Kopiujesz klucz publiczny na zdalną maszynę:
Kod:

ssh-copy-id user@server
i już możesz wykonać pierwsze polecenie z tego posta.


I

sciadzieda 20.02.2015 19:17

Aby wykonać kopię ze swojego macbooka możesz wykonać:

Kod:

ssh user@serwer_www 'cd ~/katalog; tar cf - .' | ssh user@ten_twój_nas tar xf -'
- po uprzednim umieszczeniu na obu zdalnych maszynach twoich kluczy (oczywiście robimy to jednorazowo!).

Sposób przydatny aby ominąć jakieś firewalle, zabezpieczenia etc
Kopiowanie następuje z użyciem twojego macbooka.

---------
Możesz też w skrypcie użyć polecenia
Kod:

scp

M@X 20.02.2015 23:28

Ledwo zarejestrowany, a taki fachowiec ;-). Dzieki, przetestuje jutro!

sciadzieda 20.02.2015 23:39

Na Mac OS X nie ma chyba ssh-copy-id

Ta linijka robi to samo:

Kod:

cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'
To samo czyli dopisuje do pliku authorized_keys, plik klucza publicznego: id_rsa.pub.


Wszystkie czasy w strefie CET. Aktualna godzina: 22:10.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.