-
1. Data: 2012-10-19 09:02:33
Temat: Monitorowanie zmian FTP
Od: "Wojciech Sura" <s...@s...op.pl>
Hej!
Rozpatrzmy program, który utrzymuje na serwerze FTP mirror jakichś danych
(taka prosta synchronizacja, coś jak Google Drive albo Skydrive, tylko na
FTP). Uruchamiamy dwie stacje robocze synchronizujące się z tym samym
katalogiem. Na jednej stacji następuje zmiana - to można złapać dosyć
łatwo, ponieważ Windows umożliwia monitorowanie zmian w danym katalogu.
Plik aktualizowany jest na FTP... ale w jaki sposób drugi program może
stwierdzić, że zaszły jakieś zmiany, które trzeba zaktualizować?
Szczególnie, gdy plików do aktualizacji jest bardzo dużo i nie za bardzo
można sobie pozwolić na częste przeszukiwanie całej hierarchii?
Pozdrawiam -- Spook.
--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/
-
2. Data: 2012-10-19 09:36:50
Temat: Re: Monitorowanie zmian FTP
Od: Baranosiu <r...@w...pl>
Dnia 19.10.2012 Wojciech Sura <s...@s...op.pl> napisał/a:
> Hej!
>
> Rozpatrzmy program, który utrzymuje na serwerze FTP mirror jakichś danych
> (taka prosta synchronizacja, coś jak Google Drive albo Skydrive, tylko na
> FTP). Uruchamiamy dwie stacje robocze synchronizujące się z tym samym
> katalogiem. Na jednej stacji następuje zmiana - to można złapać dosyć
> łatwo, ponieważ Windows umożliwia monitorowanie zmian w danym katalogu.
> Plik aktualizowany jest na FTP... ale w jaki sposób drugi program może
> stwierdzić, że zaszły jakieś zmiany, które trzeba zaktualizować?
> Szczególnie, gdy plików do aktualizacji jest bardzo dużo i nie za bardzo
> można sobie pozwolić na częste przeszukiwanie całej hierarchii?
Sposobów jest co najmniej kilka. Najbardziej klasyczny to oczywiście
sprawdzanie dat modyfikacji każdego pliku. Druga możliwość (często
stosowana) to po każdej zmianie serwer aktualizuje plik ls-lR.gz
(zawierającego zgzipowany wynik unixowego polecenia ls -lR :D) w głównym
folderze ftp, a programy klienckie sprawdzają tylko datę
modyfikacji tego pliku, jeśli jest nowsza niż ta, którą mają u siebie,
to pociągają ten plik, a w nim już są daty modyfikacji (i wielkości)
wszystkich innych plików, więc lokalnie mogą sprawdzić co jest
nieaktualne i dociągnąć tylko potrzebne rzeczy. Trzecia możliwość, to
zastosowanie jakiegoś mechanizmu sum kontrolnych (na przykład md5) i
sprawdzanie nie po datach, tylko po zawartości plików (zasada taka
sama jak przy ls-lR tylko porównuje się sumy kontrolne a nie daty -
skuteczniejsze).
Z FTP jest natomiast jeden podstawowy problem, nie zapewnia on
"blokowania" plików (czyli dwie osoby na raz mogą próbować nadpisać
ten sam plik), do takich celów lepszy jest protokół RSYNC (lub
jakikolwiek system zarządzania wersjami, na przykład GIT).