Skrypt do przenoszenia plików między serwerami

Kamienne arkady akweduktu

Przenoszenie plików ręcznie działa do momentu, gdy trzeba to robić codziennie o szóstej rano. Wtedy zaczyna zawodzić.

Połączenie szyfrowane

Protokół bez szyfrowania przesyła dane i hasło otwartym tekstem. Przy plikach zawierających dane firmowe to nie jest kwestia wygody.

Warto też sprawdzić, czy skrypt weryfikuje tożsamość serwera po drugiej stronie. Połączenie szyfrowane z dowolnym serwerem, który się podszył, chroni tylko przed podsłuchem, a nie przed wysłaniem plików w niewłaściwe miejsce. Wyłączenie tej weryfikacji jest typowym skrótem stosowanym przy pierwszym uruchomieniu i typową rzeczą, o której potem nikt nie pamięta.

Uwierzytelnianie kluczem

Klucz zamiast hasła w treści skryptu. Hasło zapisane w pliku wcześniej czy później trafi do kopii zapasowej albo do repozytorium.

Klucz powinien należeć do osobnego konta, które ma dostęp wyłącznie do katalogu wymiany i nie ma prawa uruchamiania poleceń. Reszta zasad jest w tekście o bezpieczeństwie skryptów administracyjnych. Warto z góry ustalić, kto ma klucz wymienić przy odejściu pracownika, bo to czynność, o której nikt sam z siebie nie pamięta.

Sprawdzenie kompletności

Porównanie rozmiaru i sumy kontrolnej po przesłaniu. Plik urwany w połowie wygląda jak plik.

Suma kontrolna rozstrzyga też inną sprawę: czy plik o tej samej nazwie zawiera nowe dane, czy jest tym samym plikiem wysłanym powtórnie. Przy wymianie danych z kontrahentem to najprostsza ochrona przed podwójnym wczytaniem.

Plik gotowy do odczytu

Wgrywany pod nazwą tymczasową i przemianowany po zakończeniu. Bez tego odbiorca odczyta plik w trakcie zapisu.

Odbiorca powinien dodatkowo poczekać, aż plik przestanie rosnąć, jeśli nie da się uzgodnić nazw tymczasowych. To zabezpieczenie tańsze niż wyjaśnianie, dlaczego import wczytał połowę zamówień. Co dalej dzieje się z takim plikiem, opisuje tekst o imporcie i eksporcie danych plikami.

Obsługa przerwania

Wznowienie zamiast rozpoczynania od nowa. Przy dużych plikach i niestabilnym łączu to różnica między działaniem a jego brakiem.

Przy powtarzaniu przydaje się odstęp rosnący po każdej nieudanej próbie. Skrypt ponawiający natychmiast i bez końca obciąża obie strony i zwykle kończy się blokadą po stronie odbiorcy. Liczba prób powinna być ograniczona, a po jej wyczerpaniu ma pójść powiadomienie, nie cisza.

Porządek po stronie odbiorcy

Pliki przetworzone przenoszone do katalogu archiwum, nie zostawiane w katalogu przychodzącym. Inaczej po miesiącu nie wiadomo, co zostało wczytane.

Katalog archiwum potrzebuje własnego terminu czyszczenia, inaczej sam staje się problemem. Przydaje się podział na podkatalogi z datą i osobne miejsce na pliki, których nie udało się przetworzyć. Te ostatnie muszą być widoczne, a nie wymieszane z resztą — plik odłożony po cichu wygląda dokładnie tak samo jak wczytany poprawnie.