Automatyczna synchronizacja folderu Moje dokumenty na partycji Windows z Dokumentami w Ubuntu

Słowa kluczowe: synchronizacja, montowanie, HAL, cron, rsync, notify-osd, pmount, env, dual boot, terminal, skrypt, shell, bash, Ubuntu, Windows

Artykuł przedstawia sposób rozwiązania zadania automatycznej synchronizacji zawartości folderu Moje dokumenty umieszczonego na partycji systemu Windows z katalogiem Dokumenty na partycji Ubuntu.

W przypadku, gdy zachodzi potrzeba użycia systemu Windows jako platformy dla programów, które nie działają zbyt dobrze pod Ubuntu ani w wirtualnej maszynie (np. karty telewizyjne, wideo) pożądana jest synchronizacja efektów pracy na Windows z katalogiem domowym na Ubuntu. Osiągnąć to można stosując narzędzie rsync, które potrafi synchronizować i kopiować pliki oraz katalogi na lokalnych dyskach lub dyskach sieciowych. Artykuł przedstawia synchronizację między dyskami lokalnymi.

Podczas instalacji systemu, Ubuntu rozpoznaje partycje NTFS Windows oraz domyślnie montuje je w katalogu /media. Zakładam, że ten krok został wykonany. Jeżeli partycje nie montują się przy starcie systemu należy je ręcznie zamontować przed przystąpieniem do synchronizacji.

W przypadku, gdy dane znajdują się na dysku przenośnym (removable devices) do zamontowania można użyć programu pmount. Takie podejście nie wymaga tworzenia wpisów w /etc/fstab oraz w pełni polega na warstwie abstrakcji sprzętowej (HAL). Oznacza to (w bardzo dużym uproszczeniu), że HAL automatycznie stworzy katalog w /media, podmontuje tam wskazane urządzenie, i co - bardzo istotne - wszystkie te operacje nie będą wymagać praw administratora (root).

Co w przypadku, gdy dane nie znajdują się na dysku przenośnym, a na przykład na dysku SATA? Program pmount odmówi zamontowania dysku SATA. Można wymusić montowanie dysków SATA umieszczając ścieżkę do urządzenia w pliku /etc/pmount.allow. W tym przypadku wskazane urządzenie nie może mieć już istniejącego wpisu w /etc/fstab.

Przykład dla dysku wskazywanego przez /dev/sdb1 (dysk SATA, dowiedz się więcej o oznaczeniach urządzeń dyskowych). Jeżeli nie masz zainstalowanego pmount, zainstaluj go używając

sudo apt-get install pmount

Program pmount nie pozwoli na zamontowanie dysku SATA, należy to wymusić dodając do /etc/pmount.allow linijkę (użyj sudo vim /etc/pmount.allow):

/dev/sdb1

Montowanie (uzyskanie dostępu do danych na dysku):

pmount /dev/sdb1

i odmontowanie (zamknięcie dostępu do danych na dysku):

pumount /dev/sdb1

Synchronizacja plików powierzona zostanie programowi rsync. Pełną listę opcji narzędzia można uzyskać wpisując man rsync, najważniejsze z nich przedstawiono tutaj. Program zainstalujesz wpisując w konsolę:

sudo apt-get install rsync

Skrypt basha (umieszczony w /usr/local/etc/rsync/win2ubuntu.sh), który zajmie się synchronizacją, ma następującą strukturę:

#!/bin/bash
 
USER_NAME="user"
DISK_DEVICE="/dev/sdb1"
DISK_LABEL="/media/WINDOWS"
 
# Synchronizacja dokumentów "/home/$USER_NAME/Moje dokumenty" z dokumentami
# "Moje dokumenty" w systemie Windows XP na dysku $DISK_DEVICE
 
/usr/bin/notify-send -t 10000 -u normal "Synchronizacja dokumentów" "Trwa synchronizacja dokumentów z folderem Moje dokumenty w systemie Windows dla użytkownika $USER_NAME."
 
pmount $DISK_DEVICE $DISK_LABEL
 
/usr/bin/rsync -q -r -b -t -z -h --delete --copy-unsafe-links "$DISK_LABEL/Documents and Settings/$USER_NAME/Moje dokumenty/" "/home/$USER_NAME/Moje dokumenty/"
 
pumount $DISK_DEVICE
 
/usr/bin/notify-send -t 5000 -u normal "Synchronizacja dokumentów" "Zakończono synchronizację dokumentów z folderem Moje dokumenty w systemie Windows dla użytkownika $USER_NAME."

Ścieżka /dev/sdb1 odpowiada punktowi montowania /media/WINDOWS. Program notify-send wyświetli odpowiednie powiadomienie przed i po synchronizacji.


Powiadomienie przed rozpoczęciem synchronizacji.

Automatyczne uruchomienie skryptu co 12 godzin zapewni ustawienie go jako zadania cron. W tym celu należy wykonać sudo crontab -e i dodać linijkę

0 12 * * * env DISPLAY=:0.0 /bin/sh /usr/local/etc/rsync/win2ubuntu.sh

Wywołanie skryptu w zmienionym środowisku (polecenie env) z obsługą trybu graficznego (DISPLAY=:0.0) umożliwi wyświetlenie graficznego powiadomienia przez notify-send. Należy wykonać xhost +local:, aby móc odebrać graficzne powiadomienie.

Valid XHTML 1.0 Strict