Dziś pokaże, jak go skonfigurować WD My Book World Edition, żeby automatycznie kopiował dane ze zdalnego konta FTP. Poniższą instrukcję można (prawdopodobnie – sam nie testowałem) zastosować również na innego typu dyskach sieciowych lub prostych dystrybucjach linuksowych. Warto więc na nią spojrzeć nawet jeśli nie mamy konkretnie tego modelu dysku sieciowego.

Manager pakietów

Linux znajdujący się na WD My Book World Edition jest tak okrojony, że nie zawiera domyślnie żadnego managera pakietów. A bez managera pakietów ciężko jest cokolwiek zainstalować (przynajmniej mniej obeznanym użytkownikom Linuksów). Poszukałem trochę w necie i znalazłem rozwiązanie – ipkg. Obszerna instrukcja mówiąca jak go zainstalować i używać znajduje się tutaj. Nam jednak potrzebne będzie tylko kilka wybranych poleceń.

Logujemy się na dysk poprzez SSH jako root. Poleceniem wget pobieramy skrypt:

wget http://mybookworld.wdfiles.com/local--files/optware/setup-whitelight.sh

Skrypt wygląda następująco (na wypadek gdyby były problemy z pobraniem):

feed=http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable
ipk_name=$(wget -qO- $feed/Packages | awk '/^Filename: ipkg-opt/ {print $2}')
wget $feed/$ipk_name
tar -xOvzf $ipk_name ./data.tar.gz | tar -C / -xzvf -
mkdir -p /opt/etc/ipkg
echo "src armel http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable" > /opt/etc/ipkg/armel-feed.conf
wget http://mybookworld.wikidot.com/local--files/optware/sort_dirname.tar.gz
tar xvfz sort_dirname.tar.gz -C /

Odpalamy pobrany skrypt:

sh setup-whitelight.sh

lub kolejno każdą linię wypisaną powyżej. Jeśli wszystko poszło pomyślnie, to manager ipkg znajdziemy w: /opt/bin/ipkg. Do pełni szczęścia potrzeba nam jeszcze zaktualizować listę pakietów:

/opt/bin/ipkg update

To wszystko co jest nam teraz potrzebne odnośnie ipkg.

Klient FTP

Do komunikacji ze zdalnym kontem FTP przyda nam się jakiś klient. Instalujemy więc ncftpget:

/opt/bin/ipkg install ncftpget

Jest on bardzo prosty w użyciu, a dodatkowo nadaje się super do ściągania plików przy użyciu linii komend. Po instalacji możemy go znaleźć w: /opt/bin/ncftpget. Uruchamiamy go następująco:

/opt/bin/ncftpget -V -R -d test.log -f ustawienia_konta.cfg /lokalny/folder /ftp/folder

Co oznaczają poszczególne fragmenty? Może po kolei:

  • -V – nie wyświetlaj pasków postępu na ekranie (ang. verbose)
  • -R – pobierz pliki rekurencyjnie
  • -d test.log – zapisz postęp pobierania do pliku test.log
  • -f ustawienia_konta.cfg – weź ustawienia konta FTP z pliku ustawienia_konta.cfg
  • /lokalny/folder – folder, do którego mają być pobrane elementy z konta FTP
  • /ftp/folder – folder znajdujący się na koncie FTP, z którego mają być pobierane elementy

Format pliku ustawienia_konta.cfg jest następujący:

host nazwa.hosta.z.kontem.ftp
user nazwa_uzytkownika
pass haslo_uzytkownika

Jak widać komenda pobierająca pliki z FTP jest prosta i nie powinna sprawiać problemów. Teraz przydałoby się zautomatyzować cały proces.

Automatyzacja

Do zautomatyzowania całego procesu wykorzystamy cron-a. Na początku musimy go zainstalować:

/opt/bin/ipkg install cron

Systemowa tablica crontab wyląduje w: /opt/etc/crontab. Tam zdefiniujemy zadania, które cron ma wykonywać. Szczegółowy opis w jaki sposób można dodawać kolejne zadania znajduje się w Wikipedii.

Wygenerowany plik /opt/etc/crontab wygląda podobnie do tego:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/
#---------------- Default is EMPTY ------------------#

Do systemowej tabeli crontab każde zadanie dodajemy w formacie:

czas_wykonywania nazwa_użytkownika komenda

gdzie:

  • czas_wykonywania – specjalnie sformatowany czas, w którym ma wykonywać się nasze zadanie (szczegółowe informacje znajdują się tutaj)
  • nazwa_użytkownika – użytkownik, dla którego wykonujemy zadanie (należy tu pamiętać o uprawnieniach użytkowników)
  • komenda – zadanie do wykonania

Edytujemy plik i dodajemy nasze zadanie:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/

0 0 * * *	root	/opt/bin/ncftpget -V -R -d test.log -f ustawienia_konta.cfg /lokalny/folder /ftp/folder

Poniższy zapis:

0 0 * * *	root	/opt/bin/ncftpget -V -R -d test.log -f ustawienia_konta.cfg /lokalny/folder /ftp/folder

oznacza, że pobieranie plików z FTP będzie wykonywane z uprawnieniami użytkownika root każdego dnia o północy (0 0 * * *).

Jeśli mielibyście problemy ze skonfigurowaniem cron-a, to na Ask Ubuntu znajduje się ciekawy artykuł opisujące możliwe przyczyny problemów.

I tyle. Od dziś nasz dysk będzie co noc pobierał nasze pliki ze zdalnego konta FTP i zapisywał ich kopie lokalnie.