Skrypt wykonujący kopię zapasową na szyfrowanym nośniku
Skrypt wykonuje kopię zapasową wybranych katalogów z pominięciem katalogów
zawartych w pliku /home/user/bin/backup2sd.exclude
który jest ustawiony
w zmiennej ExcludeFile
, każdy katalog znajduje się w oddzielnej linii.
Przykładowy plik /home/user/bin/backup2sd.exclude
.Private .PyCharmCE2017.3 .cmake .cache .dbus .ecryptfs .gimp-2.8
Parametry wywołania skryptu
-
-m
- podmontowanie nośnika -
-u
- odmontowanie nośnika -
-b
- wykonanie kopii zapasowej -
-h
- wyświetlenie pomocy
Wywołanie skryptu bez parametrów uruchamia wykonanie kopii zapasowej.
#!/bin/env bash
CryptoName=CryptoSD
Device=/dev/mmcblk0
SRC=/home/user
DST=/home/user/CryptoSD
ExcludeFile=/home/user/skrypty/backup2sd.exclude
root_chk() {
if [[ $EUID -ne 0 ]]; then
echo "Ten program musisz uruchomić jako root" 1>&2
exit 1
fi
}
pomoc() {
echo
echo
echo "Podmontowanie nośnika."
echo " # $0 -m"
echo
echo "Odmontowanie nośnika."
echo " # $0 -u"
echo
echo "Wykonanie kopii zapasowej."
echo " # $0 -b"
echo
exit
}
mount_sd() {
root_chk
/sbin/cryptsetup luksOpen $Device $CryptoName
/bin/mount /dev/mapper/$CryptoName /home/red/$CryptoName
}
umount_sd() {
root_chk
partition=$(mount | grep $CryptoName | awk '{ print $3 }')
crypto=$(ls /dev/mapper/ | grep $CryptoName)
if [ -n "$partition" ]
then
echo -n "Synchronizacja... "
/bin/sync && echo [OK]
echo -n "Odmontowuje partycje... "
/bin/umount $partition && echo [OK]
fi
if [ -n "$crypto" ]
then
echo -n "Zamykam crypto... "
/sbin/cryptsetup luksClose $CryptoName && echo [OK]
fi
}
backup_sd() {
root_chk
### Montowanie
mount_sd
### Backup
rsync -a -v --exclude-from=$ExcludeFile $SRC $DST
rsync -a /etc $DST
### Odmontowanie
umount_sd
}
while getopts :mubh option
do
case "$option" in
m) mount="yes"
;;
u) umount="yes"
;;
b) backup="yes"
;;
h) pomoc
;;
\?) echo
echo "nieznany parametr -$OPTARG"
exit 1
;;
:) echo
echo "Parametr -$OPTARG wymaga argumentu."
exit 1
;;
esac
done
if [ -n "$mount" ]; then
mount_sd
exit 0
fi
if [ -n "$umount" ]; then
umount_sd
exit 0
fi
if [ -n "$backup" ]; then
backup_sd
exit 0
fi
root_chk
echo
echo -n "Wykonać kopię zapasową na karcie SD? [T/n]: "
read odp
case $odp in
T|t)
backup_sd
;;
N|n)
exit
;;
*)
backup_sd
;;
esac
Skrypt formatujący nośnik z obsługą szyfrowania
Skrypty używają jako nośnika kopii zapasowej karty SD: /dev/mmcblk30
, jest
on ustawiony w parametrze Device
należy zmienić na właściwy dla swojego
systemu.
#!/bin/bash
CryptoName=CryptoSD
Device=/dev/mmcblk30
if [[ $EUID -ne 0 ]]; then
echo "This program must be run as root" 1>&2
exit 1
fi
cryptsetup luksFormat -s 512 -h sha512 -i 333 $Device
cryptsetup luksOpen $Device $CryptoName
mkfs.ext4 /dev/mapper/$CryptoName
sleep 3
cryptsetup close $CryptoName
Date: 2020-10-24T14:33:48+02:00 |