Linux: Kopia zapasowa pendrive

Ludzie dzielą się na tych co robią backup, i na tych, którzy co będą go robić.

Kopia zapasowa pendrive

Jeśli dużo pracujesz na danych trzymanych na zewnętrznych nośnikach, takich jak pendrive to ważna jest częsta kopia zapasowa danych.
Poniższy sposób wykorzystuje narzędzie rsync i przesyła tylko zmienione pliki, a więc może być używany również do przenoszenie dużej ilości danych.
Dodatkowo w razie niepodłączenia pendrive zostaniemy poinformowani niepowodzeniu.

Skrypt do poprawnego działania potrzebuje narzędzi: rsync, notify-send oraz gedit. Ostatni można oczywiście zastąpić dowolnym edytorem tekstu lub po prostu zakomentować linię #23. Odpowiada ona za wyświetlanie wyjścia rsync.

Konfiguracja skryptu

Działanie skryptu oparte jest o UUID partycji.
UUID partycji o nazwie Pendrive uzyskujemy w następujący sposób:

[code lang=”shell”]
$ mount
/dev/sdb1 on /media/Pendrive […]
[/code]

Nasz Pendrive to /dev/sdb1 więc szukamy go

[code lang=”shell”]
$ ls -al /dev/disk/by-uuid/
[…]
lrwxrwxrwx 1 root root 10 mar 3 22:41 B34C-18DF -> ../../sdb1
[/code]

Nasz UUID to B34C-18DF

Jeśli chcemy skopiować dane z CAŁEGO pendrive to zmienną

[code]
_SRC_DIR=./
[/code]

ustawiamy na ./ . W przeciwnym wypadku wpisujemy nazwę folderu do skopiowania.

Na koniec pozostaje nam określenie ścieżki do kopii.
U mnie jest to

[code]
_DST_DIR=$HOME/kopia
[/code]

Skrypt

[code lang=”shell”]
#!/bin/bash

# tutaj wpisujemy nasz UUID
_PEN_UUID=B34C-18DF

# tutaj katalog do skopiowania
_SRC_DIR=wazne

# a tutaj sciezke docelowa dla kopii
_DST_DIR=$HOME/kopia/

# skrypt
_DEV_=`ls -al /dev/disk/by-uuid/ | grep $_PEN_UUID | awk '{ print $11}’`
_MNT_=`mount | grep ${_DEV_:6} | awk '{print $3}’`

if [ ${#_MNT_} -gt 0 ]; then
cd $_MNT_
mkdir -p $_DST_DIR
rsync -av ./$_SRC_DIR $_DST_DIR > $_DST_DIR/log.txt
echo "Aktualizacja wykonana w dniu: `date`" >> $_DST_DIR/log.txt
notify-send "Aktualizator" "Aktualizacja powiodła się!" -i desktop-effects
# zakomentuj ponizsza linie jesli nie chcesz aby otwieralo sie powiadomienie
gedit $_DST_DIR/log.txt
else
notify-send "Aktualizator" "Nie wykryto nośnika!" -i desktop-effects
fi
[/code]

Skrót

Dodatkowo polecam utworzyć aktywator do naszego skryptu.
I pamiętajcie: backup nie zrobi się sam.

Jeśli macie zastrzeżenie co do skryptu lub czegoś nie rozumiecie – piszcie!

Comments

Leave a Reply

You must be logged in to post a comment.