Ściągamy pliki bez komputera

W ostatnim odcinku podłączyłem dysk do routera (Dir-320 z DD-WRT), więc przyszła pora przyjrzeć się możliwością wykorzystania go do transferu plików. Rozwiązanie jest bardzo wygodne - ustawiamy co ma się ściągnąć, wyłączamy komputer, a router ściąga co trzeba, choćby i dwa dni. 320GB na dysku daje jednak spore możliwości, jeżeli mamy skąd i co ściągać.

Scp i rsync

Pierwsze co zacząłem ściągać (a właściwie wysyłać z serwera) to kopie zapasowe i logi. Wykorzystuję do tego dwa mechanizmy - scp i rsync. Przypominam, że założeniem jest, że zachowujemy maksimum bezpieczeństwa i wystawiamy tylko jeden port dla ssh, stąd dla połączeń inicjowanych z zewnątrz scp i rsync przez ssh są idealne. Może nie jest to najprostsza opcja, więc jeżeli kogoś interesuje tylko ftp i torrent, to może spokojnie pominąć kilka akapitów. Co będzie potrzebne? Z pewnością trzeba doinstalować rsync:

/opt/bin/ipkg install rsync

Mamy co trzeba, zacznijmy od kopiowania plików z serwera przez scp. Możemy to robić podając hasło, jednak to nie do końca nas satysfakcjonuje. Backup ma być przesyłany w nocy, automatycznie, więc podawanie hasła nie będzie możliwe. Musimy więc zadbać o to, żeby klucz publiczny ssh użytkownika (na serwerze), który będzie wysyłał pliki został zapisany w polu Authorized Keys zakładki Services/Services w interfejsie web naszego routera. To pozwoli łączyć się przez ssh (a co za tym idzie przez scp) bez podawania hasła, oczywiście jeżeli klucz nie ma hasła. Oczywiście klucze bez hasła nie są dobrym pomysłem, gdy nie mamy pełnego zaufania do tego co się dzieje na serwerze. Załóżmy jednak, że mamy.

Wszystko gotowe, można zaczynać. Pamiętamy, że nasze ssh jest widoczne z zewnątrz na porcie 443, chcemy użyć użytkownika root (może nie najlepszy pomysł, ale zmienimy to z czasem), a po drugiej stronie używamy użytkownika, który rootem nie jest (to byłoby już przegięcie). Proste kopiowanie pliku wykonujemy przez wywołanie na serwerze:

scp -P 443 plik.txt root@mojrouter.dyndns.org:/mmc/

Dzięki czemu plik.txt powędruje wprost do naszego routera. Jeżeli klucz ssh został wklejony poprawnie, nie powinniśmy zostać zapytani o hasło. Ja wcześniej przygotowaną kopię stron www z pliku www.tgz kopiuję do pliku, którego nazwa zaczyna się od daty (żeby kolejne kopie nie nadpisywały się):

scp -P 443 /kopia/www.tgz root@mojrouter.dyndns.org:/mmc/backup/serwer/`date +%Y%m%d`www.tgz

Proste, prawda? Z rsync nie jest wcale trudniej. Ponieważ mamy na naszym Dir-320 zainstalowanego już rsynca, więc możemy zsynchronizować katalog z logami:

rsync -v -r -e "ssh -p443" /kopia/logi/ root@mojrouter.dyndns.org:/mmc/backup/serwer/logi/

Prsote, działa sprawnie, w pełni automatycznie. Czasem trzeba tylko przegrać z dysku routera dane np. na płyty DVD. Oczywiście nie jest to rozwiązanie dla poważnych serwerów produkcyjnych, ani nawet pomysł na jedyną kopię bezpieczeństwa dla mniej ważnego serwera, ale dla administratora zarządzającego małym serwerem zdalnie lokalna kopia części danych czy logów może być nieoceniona.

FTP i torrent

Na początku naszej zabawy zainstalowaliśmy świetnego klienta FTP - ncftp. Teraz trochę uzupełnimy listę programów i dołożymy do tego screen i rtorrent. Dla mniej obytych z Linuksem i Uniksami, screen to program pozwalający zarządzać kilkoma sesjami/ekranami, w których uruchamiamy programy, przełączanie się między nimi, a także zostawienie uruchomionych programów po wylogowaniu się. Nieodzowne, żeby włączyć ściąganie plików i pozostawić je po wyłączeniu komputera, a zawsze móc zajrzeć i wydać dodatkowe polecenia. Rtorrent jest natomiast dobrym, tekstowym klientem torrent.

Uruchamiamy więc polecenie screen i… pozornie nic się nie zmienia, mamy sesję shella. Sprawdźmy jednak czy się uruchomił - wciskamy Ctrl+A a następnie ?. Powinien wyświetlić się ekran pomocy - z listą poleceń. Jest? Ok. Enter i znika. Aby otworzyć nowy ekran z shellem naciskamy Ctrl+A, C. Żeby przełączać się między ekranami używamy Ctrl+A, N. A żeby pozostawić sesję screena w tle, aby móc się wylogować wciskamy Ctrl+A, D, po czym uzyskujemy informację [detached]. Aby powrócić do naszych programów, np. po ponownym zalogowaniu, wydajemy komendę screen -r i już powinniśmy móc przełączać się między ekranami. Po paru użyciach łatwe oraz bardzo wygodne i skuteczne.

Cóż więc szkodzi teraz pod sesją screena uruchomić ncftp?

cd /mmc ncftp ftp.task.gda.pl

ncftp nazwą serwera jako jedyną opcją zaloguje nas jako anonymous. Możemy odnaleźć potrzebny plik (przydadzą się komendy cd, ls, pwd), a potem go zacząć ściągać (get, mget). Plik zaczyna się ściągać, a my robimy detach (Ctrl+A, D) i już możemy się wylogować i pójść na piwo. Po powrocie sprawdzimy tylko czy wszystko się ściągnęło.

Z torrentem wcale nie jest trudniej. W sesji screena przechodzimy do katalogu /mmc (lub innego, gdzie chcemy ściągać pliki) i wywołujemy polecenie rtorrent. Uruchomi się, wbrew pozorom, prosty w obsłudze program o całkiem dużych możliwościach. Jak zacząć ściągać? Prosto, załóżmy, że mamy link do pliku torrent, np. do Fedory w wersji 11. Link znaleziony na oficjalnej stronie projektu. Wciskamy więc backspace i wpisujemy: http://torrent.fedoraproject.org/torrents//Fedora-11-x86_64-DVD.torrent, po czym wciskamy Enter. Torrent jest ściągany ze strony www a zadanie ściągnięcia obrazu płyty trafia do kolejki.

Teraz nasz router jest naprawdę przydatny i wykonuje wiele zadań, które wcześniej powierzaliśmy prądożernemu komputerowi. A to jeszcze nie koniec…