Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-06-09 09:42:16

  Grzeslaw - Użytkownik

Grzeslaw
Użytkownik
Zarejestrowany: 2008-02-12

Sprawdzanie różnic między plikami na serwerach

Witka,

Potrzebuje sprawdzić jakie są różnice między środowiskiem developerskim a testowym. Coś jak diff, tyle że diff działa lokalnie. Znalazłem gdzies jakiegoś skrypta z AIXa, i go przerobiłem lekko, jednak nie działa tak jak chciałem - nie jestem w stanie tego zkminic co tam jest nie halo:

Kod:

grzeslaw@hp1:~$ ssh h5 `echo ls -l test/`
total 0
grzeslaw@hp1:~$ ls -l test/
razem 12
-rw-r--r-- 1 grzeslaw grzeslaw  0 cze  8 19:58 1.txt
-rw-r--r-- 1 grzeslaw grzeslaw 10 cze  8 19:58 2.txt
-rw-r--r-- 1 grzeslaw grzeslaw 10 cze  8 19:58 3.txt
-rw-r--r-- 1 grzeslaw grzeslaw 10 cze  8 19:58 4.txt
grzeslaw@hp1:~$ rsync test/* h5:test/
grzeslaw@hp1:~$ 
grzeslaw@hp1:~$ ssh h5 `echo ls -l test/`
total 12
-rw-r--r-- 1 grzeslaw grzeslaw  0 2010-06-08 20:07 1.txt
-rw-r--r-- 1 grzeslaw grzeslaw 10 2010-06-08 20:07 2.txt
-rw-r--r-- 1 grzeslaw grzeslaw 10 2010-06-08 20:07 3.txt
-rw-r--r-- 1 grzeslaw grzeslaw 10 2010-06-08 20:07 4.txt
grzeslaw@hp1:~$ cat diff.sh 

local_dir="/home/grzeslaw/test"
remote_dir="/home/grzeslaw/test"
remote_sys="grzeslaw@h5"

find $local_dir -type f | xargs -i cksum {} >local.out
ssh $remote_sys `echo 'find '${remote_dir}' -type f  -exec cksum {} \;'` >remote.out;
diff local.out remote.out
grzeslaw@hp1:~$ ./diff.sh 
1d0
< 1552147931 10 /home/grzeslaw/test/2.txt
4a4
> 1552147931 10 /home/grzeslaw/test/2.txt
grzeslaw@hp1:~$

Jesli nie macie pomysłu co tam jest nie halo, to może polecicie mi co innego? Próbowałem robić rsynca z opcją --dry-run jednak również nie wyświetla mi różnic, tylko wszystkie pliki.

Z góry dzięki za waszelkie sugestie/pomysły.

Offline

 

#2  2010-06-09 10:58:14

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Sprawdzanie różnic między plikami na serwerach

Pewnie da się to zrobić jakimś automatem (do czego zachęcam, po co komplikować sobie życie?), na piechotę proponuję to zrobić w ten sposób:

1. Za pomocą md5sum robisz listę sum md5 plików, który kopiujesz na serwer2.

Kod:

md5sum plik1 plik2 plik3 plik4 >serwer1.md5

2. Na serwer2 sprawdzasz które pliki w ogóle się różnią

Kod:

LANG=C md5sum -c 1.md5 2>/dev/null | awk '/FAILED$/ {print $1}' | sed "s/:$//g"

3. Pobierasz owe pliki i robisz diffa

Z wykorzystaniem ssh całość można ładnie oskryptować.


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#3  2010-06-09 11:32:02

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Sprawdzanie różnic między plikami na serwerach

proponowalbym rsync ... mozna puscic po ssh zainteresuj sie opcjami:
-c (kieruje sie sumami kontrolnymi)
-nv lub --list-only (pokazuje tylko jakie pliki by kopiowal)
-r (aby chodzil rekurencyjnie po katalogach)
--delete(aby wywal z celu pliki usuniete w zrodle)

Edit: ciekawa jest tez --delay-updates oraz --only-write-batch

Ostatnio edytowany przez bercik (2010-06-09 11:37:07)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)