jungo 08.04.2011 13:24

Я рекомендуюБэкапим систему, используя rsync.

Давно написал скрипт для инкрементального бэкапа системы на другой жесткий диск с помощью rsync. Скрипт простой, принимает лишь один аргумент - что будем бекапить: root, home или базу данных pacman. Можно очень просто добавить свои цели для бекапа.
Для изменения под себя, надо просто указать, где лежит файл исключений (те директории и файлы, которые не надо сохранять), где лежит лог-файл, и, конечно же, директорию для создания резервной копии системы.

Вот собственно сам код:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
# backup script by jungo
# usage:
# bash backup.sh <root|home|pacman>

EXCLUDE_FILE="/home/jungo/bin/rsync.exclude"
LOG_FILE="/home/media/backup/backup.log"

case "$1" in
"root")
# check if we are root
if < "$UID" != 0 >; then
echo "You should be root to use this backup script unless"
echo "you want to backup your home directory."
exit 1
fi
SOURCE_DIR="/"
BACKUP_DIR="/home/media/backup/root"
TARGET="root"
;;
"home")
SOURCE_DIR="/home/jungo/"
BACKUP_DIR="/home/media/backup/root/home/jungo"
TARGET="home"
;;
"pacman")
SOURCE_DIR="/var/lib/pacman/local/"
BACKUP_DIR="/home/media/backup/root/var/lib/pacman/local"
TARGET="pacman database"
;;
*)
echo "backup.sh: wrong target"
echo "usage: backup.sh <root|home>"
exit 1
;;
esac

mkdir -p "$BACKUP_DIR"

echo "Backing up" "$SOURCE_DIR" "to" "$BACKUP_DIR"
echo $(date +"%d-%m-%Y %H:%M:%S") "Backing up" "$TARGET" >> "$LOG_FILE"

rsync --archive --verbose \
--perms --hard-links --acls --xattrs --sparse \
--delete --delete-excluded --delete-after \
--exclude-from="$EXCLUDE_FILE" \
"$SOURCE_DIR" "$BACKUP_DIR"

echo "Done"
echo $(date +"%d-%m-%Y %H:%M:%S") "Done with" "$TARGET" >> "$LOG_FILE"



Также, я настроил создание резервных копий по крону:
весь корень сохраняется каждое воскресенье в 21:30
домашняя директория бекапится с понедельника по субботу в 21:30
база данных для пакмана бекапится с понедельника по субботу в 21:35


Для создания заданий крон следует использовать crontab -e:
1
2
3
30 21 * * 0 /bin/bash /home/jungo/bin/backup.sh root 2>&1 > /dev/null
30 21 * * 1-6 /bin/bash /home/jungo/bin/backup.sh home 2>&1 > /dev/null
35 21 * * 1-6 /bin/bash /home/jungo/bin/backup.sh pacman 2>&1 > /dev/null



Тэги: backup bash pacman rsync
+ 17 -
Похожие Поделиться

bmw 08.04.2011 13:55 #
rdiff-backup не подошел по каким-то критериям?
jungo 08.04.2011 14:34 #
Спасибо, про rdiff-backup не знал, хотя и гуглил.
wat_che 08.04.2011 16:18 #
Правильно сказали умные люди в коментариях к моему посту. Такие топики плюсуются не задумываясь. Спасибо.
avr 08.04.2011 17:34 #
Отлично! В избранное!
magist3r 09.04.2011 13:00 #
Еще есть rsnapshot, сам пользуюсь им для бэкапов.