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 22.02.2015 00:23

I to jest zdrowe podejscie :-). Jezeli caly swiat czegos uzywa, a uwazasz ze jest to slabe, to zrob po swojemu, niezgodnie z ograniczajacymi Cie standardami. Udowodnij ze dziala i olej reszte ktora meczy sie ze standardami z epoki jaskin. To lubie! :spoko:

sciadzieda 22.02.2015 00:10

Cytat:

Napisany przez andy (Post 1315426)
@
W linuksie pewne rzeczy można zrobić na miliard sposobów - za to go cenię, jednak czasami pewne rozwiązania są zdecydowanie lepsze niż inne ;)

Klocki Lego.

Ja za lepsze - dobre rozwiązanie często uznaję te zbudowane ze znanych mi klocków.

Wiem, że coś lepiej byłoby zrobić w awk czy nawet Lisp, ale niezbyt znam, więc używam seda, grepa, vima itd itp

Ostatnio jakieś wykresy robiłem i przyszedł mi do głowy język R, ale od tylu lat nigdy nie zagłębiłem się w to, więc użyłem znanych mi narzędzi (nota bene panowie z google robią z R cuda).

rsnapshot wydaje mi się starym skryptem Perlowym, którego nie warto już używać, no ale jeśli ktoś zna... to czemu nie.

rdiff-backup jest niezależnym softem w python (używa tego samego algo. co rsync, ale nie używa samego rsync) i dzięki tej dyskusji właśnie wdrożyłem go na swojej maszynie :)

andy 21.02.2015 20:08

@sciadzieda

Nie twierdzę, że twój sposób jest zły jednak rsync sprawdzi się zdecydowanie lepiej. Twoja metoda jest wolna za pierwszym razem a za każdym następny ta różnica będzie się powiększać, bo rsync tylko wysyła zmienione dane.

Dwa. nikt nie zmusza go do używania samego rsync'a. Jak wcześniej napisałem może użyć "wyższych" narzędzi jak rsnapshot.
Tutaj http://www.rsnapshot.org/howto/1.2/r...tml#automation jest świetnie opisane jak fajnie działa automatyzacja - m. in. przesuwa kopie.
Dodatkowo rsync wykorzystuje twarde dowiązania, dzięki czemu w kopii n+1 masz zapisane telko zmiany a to co się nie zmieniło jest twardym odniesieniem do początkowych danych :)


W linuksie pewne rzeczy można zrobić na miliard sposobów - za to go cenię, jednak czasami pewne rozwiązania są zdecydowanie lepsze niż inne ;)

Tutaj jest 30 sekundowa instrukcja dla "managerów" (rotfl) http://www.rsnapshot.org/howto/1.2/r...second_version

Jak widać*wszystko miał na tacy...

sciadzieda 21.02.2015 18:36

Cytat:

Napisany przez andy (Post 1315381)
To rozwiązanie jest mniej wydajne, bo za każdym razem wysyłasz wszystkie dane.

Sprawdźmy.

Kod:

smok$ ssh leon@x
leon$ mkdir test && cd test
leon$ wget (jajko linuxa, brak 10 postów nie pozwala zamieścić linka)
leon$ tar xf linux-3.19.tar.xz
leon$ exit
smok$ mkdir testtar && cd testtar
smok$ time ssh leon@x 'cd ~/test/linux-3.19; tar cf - .' |  tar xf -
real        1m58.866s
user        0m13.801s
sys        0m5.804s
smok$ mkdir ../testrsync && cd ../testrsync
$smok time rsync -avz -q -e ssh leon@x:~/test/linux-3.19 .
real        1m26.136s
user        0m10.861s
sys        0m8.037s
$smok rm -Rf linux-3.19/samples/*
$smok time rsync -avz -q -e ssh leon@x:~/test/linux-3.19
real        0m15.260s
user        0m0.300s
sys        0m0.764s

Czyli rsync jest szybsze, choć używa więcej CPU.

Tyle że M@X za pomocą zwykłego kopiowania stworzył bardzo dobry system backupu serwera. Domyślam się, że posiada więcej niż jedną kopię, oznaczoną czasowo. Dzięki temu intuicyjnie dokona odtworzenia backupu z dowolnego dnia oraz będzie miał materiał dla analizy pozdarzeniowej.

Używając rsync musi zrozumieć, żeby nie synchronizować tego samego katalogu na maszynie backupowej - musi stworzyć strategię, logikę backupu. Strategią może być np. kopiowanie katalogu na localu i synchronizacja tejże kopii - aby mieć backup z kolejnych dni. Bo przecież np. włamanie i utrata plików nie musi być od razu zauważone.

Musiałby też M@X zautomatyzować kasowanie wybranych kopii itd itp

Wszystko zaczyna się komplikować, a skoro mielibyśmy zmuszać M@Xa do tworzenia nowego systemu backupu, to może lepiej niech użyje np.

Kod:

rdiff-backup
który to jest już rozbudowanym narzędziem backupowym, synchronizującym wedle tego samego algorytmu co rsync i posiadającym też system logowania, o co M@X prosił na początku.

Podsumowując, rsync jest tylko narzędziem do synchronizacji plików, dzięki któremu można zbudować swoje narzędzie do backupu. Nie namawiałbym do tego M@Xa, bo posiada już swój backup i potrzebuje tylko metody wydajnego kopiowania.

Patrix 21.02.2015 13:39

andy, M@Xu ma dusze managerska, on nie chce robic, on chce gotowe ;)

andy 21.02.2015 12:29

A ja Ci podałem linki do materiału w którym jest to samo - wystarczy tylko tam wejść i przeczytać.

- Preferuję metodę wędki a nie ryby.

M@X 21.02.2015 12:16

Ale uzytkownik @sciadzieda, w przeciwienstwie do ciebie, podal mi rozwiazanie o ktore prosilem czyli gotowa linie kodu, czym wyczerpal temat.

andy 21.02.2015 10:59

To rozwiązanie jest mniej wydajne, bo za każdym razem wysyłasz wszystkie dane.

sciadzieda 21.02.2015 00: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.

M@X 21.02.2015 00:28

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

sciadzieda 20.02.2015 20: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

sciadzieda 20.02.2015 20: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

andy 16.02.2015 23:04

Z rootem chodziło mi o serwer docelowy..

M@X 16.02.2015 22:49

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

andy 16.02.2015 22:48

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


Wszystkie czasy w strefie CET. Aktualna godzina: 18:51.

Powered by vBulletin® Version 3.9.0 LTS
Copyright ©2000 - 2026, vBulletin Solutions Inc.