Potrzebowałem stworzyć skrypt, który będzie automatycznie archiwizował cały katalog /var/log i wysyłał go na zewnętrzny serwer ftp zainstalowany na komputerze w systemem Windows 2008 R2 Server.
Po napisaniu skryptu rozpocząłem testy. Skrypt poprawnie spakował, wysłał i skasował pliki. Problem pojawił się przy próbie rozpakowania otrzymanych plików. Zarówno oprogramowanie pod systemem Windows i pod systemem Linux zwracało błędy. Począwszy od uszkodzenia archiwum, błędów nagłówków skończywszy na błędach CRC. Po przeanalizowaniu problemu okazało się, że pliki przesłane z wykorzystanie polecenia "
ftp" mają inną pojemność niż pliki wynikowe.
Przekopanie całego Internetu nie przynosiło konkretnego rozwiązania. Dopiero jeden post naprowadził mnie na rozwiązanie problemu. Po zalogowaniu użytkownika na serwerze ftp należało wykonać polecenie "
binary" aby transmisja danych powiodła się i rozmiary plików były identyczne. Poniżej wklejam mój skrypt, w miejscach pogrubionych należy wstawić swoje dane i ustawienia:
#!/bin/sh
FILE1='logi.tar'
tar -zvcf /root/$FILE1 /var/log
ftp -inv 192.168.*.* << KONIEC
user użytkownik hasło
binary
put /root/$FILE1 /$FILE1
bye
KONIEC
rm /root/$FILE1
exit 0