0800555333
Hacker
- Registriert
- 9. Juli 2013
- Beiträge
- 329
- Reaktionspunkte
- 364
- Punkte
- 123
Um das trotzdem mal hier aufzugreifen, was ich im Post (hier) erwähnt hatte:
Mit rsync werden in diesem Fall nur die Dateien kopiert, die sich verändert haben.
Wenn man einmal ein komplettes Image erstellt hat und dann nur noch mit rsync arbeitet, wird nicht jedesmal nochmal alles kopiert sondern wie bereits erwähnt nur das was sich seither verändert hat..
Das geht vorallem auch in den meisten Fällen wesendlich schneller als jedesmal ein komplettes Image zu erzeugen
1) Einmalig ein Image mit " dd " erstellen, in diesem Beispiel wird das " if " Laufwerk nach /mnt/usbstick/Backup_sda.img geschrieben:
2) Ein Verzeichnis für den 3.Schritt erstellen:
3) Das erstellte Image mounten (einbinden):
4) Das Programm "rsync" installieren:
5) Script /root/rsync_backup.sh erstellen zum regelmässigen backupen mit rsync:
6. Das Script ausführbar machen:
7. Zur Kontrolle das Script ausführen:
8. Das Script in die Crontab eintragen. In diesem Beispiel wird es ein mal jede Woche, Montag Morgen um 03:00 ausgeführt:
nano /etc/crontab
Wer an sein Gerät immer nur einen USB-Stick oder Festplatte anschliest kann ausserdem sein System so einstellen dass das Device immer automatisch beim einstecken, eingehängt (mounted) und beim abziehen auch wieder ausgehängt (unmounted) wird - letzteres ist ebenfalls wichtig da es sonst haufenweise Fehlermeldungen in den Systemlogs verursacht
Ich würde aber davon abraten ständig/wöchendlich die vollständige CF zu kopieren - das belastet die CF / SD / Flash viel zu sehr
Mach ein mal ein Image, danach mountest du es und lässt mithilfe rsync nur die Dateien kopieren die sich verändert haben
Mit rsync werden in diesem Fall nur die Dateien kopiert, die sich verändert haben.
Wenn man einmal ein komplettes Image erstellt hat und dann nur noch mit rsync arbeitet, wird nicht jedesmal nochmal alles kopiert sondern wie bereits erwähnt nur das was sich seither verändert hat..
Das geht vorallem auch in den meisten Fällen wesendlich schneller als jedesmal ein komplettes Image zu erzeugen
1) Einmalig ein Image mit " dd " erstellen, in diesem Beispiel wird das " if " Laufwerk nach /mnt/usbstick/Backup_sda.img geschrieben:
Code:
dd if=/dev/sda of=/mnt/usbstick/Backup_sda.img
2) Ein Verzeichnis für den 3.Schritt erstellen:
Code:
mkdir -p /mnt/Backup
3) Das erstellte Image mounten (einbinden):
Code:
mount -o loop /mnt/usbstick/Backup_sda.img /mnt/Backup
4) Das Programm "rsync" installieren:
Code:
apt-get install rsync
5) Script /root/rsync_backup.sh erstellen zum regelmässigen backupen mit rsync:
Code:
#!/bin/bash
# Simple backup with rsync
## Create Log? [0=no , 1=yes]
LOG=1
## Log also verbose (--dry-run) rsync output? [0=no , 1=yes]
# NOTE: Logfile can get very big!
VERBOSE=0
## Wheres the Imagefile to get mounted?
IMAGE="/mnt/usbstick/BACKUP/rpi.img"
## MountPoint where Backuped-Image is mounted
MOUNTPOINT="/mnt/Backup"
## Exclude Dirs/Files (these dirs/files dont get backuped) (space seperated)
EXCLUDE="/mnt/usbstick"
# -------------------------------------------------------------- #
# >>> >> > DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE! < << <<< #
# -------------------------------------------------------------- #
for EX in $EXCLUDE ; do
[ -z "$EXCL" ] && EXCL="--exclude=$EX" || EXCL="$EXCL --exclude=$EX"
done
#- variables
LOGFILE=/var/log/$(basename $0).log
RSYNCopt="-aR --update --exclude=$MOUNTPOINT --exclude=$IMAGE --exclude=/proc --exclude=/sys $EXCL"
#- functions
# check and write log / also echo message to console
_LOG() {
[[ "$1" =~ "\r\n" ]] && echo -e "$1"
message="$1"
if [ $LOG = "1" ]; then
_DT=$(date +"%d.%m.%Y %H:%M:%S")
echo -e "[$_DT] $message" >> $LOGFILE
fi
}
#- main code
[ "$VERBOSE" = 1 ] && RSYNCopt="--dry-run $RSYNCopt"
MOUNTED=$(mount | grep "$MOUNTPOINT");
if [ -z "$MOUNTED" ]; then
_LOG "$MOUNTPOINT not mounted. Mounting $IMAGE to $MOUNTPOINT\r\n"
[ ! -d "$MOUNTPOINT" ] && mkdir -p $MOUNTPOINT
mount -o loop $IMAGE $MOUNTPOINT
fi
if [ "${MOUNTPOINT:${#MOUNTPOINT}-1:1}" != "/" ]; then
MOUNTPOINT=$MOUNTPOINT/
fi
_LOG "rsync $RSYNCopt / $MOUNTPOINT\r\n"
if [ "$VERBOSE" = 1 ]; then
rsync $RSYNCopt / $MOUNTPOINT >> $LOGFILE 2>&1
else
rsync $RSYNCopt / $MOUNTPOINT
fi
exit 0
6. Das Script ausführbar machen:
Code:
chmod +x /root/rsync_backup.sh
7. Zur Kontrolle das Script ausführen:
Code:
/root/rsync_backup.sh
8. Das Script in die Crontab eintragen. In diesem Beispiel wird es ein mal jede Woche, Montag Morgen um 03:00 ausgeführt:
nano /etc/crontab
Code:
0 3 * * 1 /root/rsync_backup.sh >/dev/null 2>&1
Wer an sein Gerät immer nur einen USB-Stick oder Festplatte anschliest kann ausserdem sein System so einstellen dass das Device immer automatisch beim einstecken, eingehängt (mounted) und beim abziehen auch wieder ausgehängt (unmounted) wird - letzteres ist ebenfalls wichtig da es sonst haufenweise Fehlermeldungen in den Systemlogs verursacht
1) udev Regel anlegen:
Mit folgendem Inhalt:
Das ist eine sehr einfach gehaltene Regel, damit ein x-beliebiger USB-Stick immer nach /mnt/usbstick eingebunden wird..
2) udev neu starten:
3) mount-point (Verzeichnis wohin der Stick gemounted wird) anlegen:
4) USB-Stick mit einer FAT32 Partition formatieren, einstecken und mit dem Befehl
prüfen ob obiges funktioniert
Das funktioniert in der Form aber nur mit einem USB-Stick/HDD. Wer mehrere nutzten möchte, muss die udev-Regel anpassen bzw anhand genauerer Merkmale das Device unterschieden
Code:
nano /etc/udev/rules.d/99-usbautomount.rules
Mit folgendem Inhalt:
Code:
ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd?1", RUN+="/bin/mount /dev/%k /mnt/usbstick"
ACTION=="remove", SUBSYSTEMS=="usb", KERNEL=="sd?1", RUN+="/bin/umount /dev/%k"
2) udev neu starten:
Code:
/etc/init.d/udev restart
3) mount-point (Verzeichnis wohin der Stick gemounted wird) anlegen:
Code:
mkdir -p /mnt/usbstick
4) USB-Stick mit einer FAT32 Partition formatieren, einstecken und mit dem Befehl
Code:
mount
Das funktioniert in der Form aber nur mit einem USB-Stick/HDD. Wer mehrere nutzten möchte, muss die udev-Regel anpassen bzw anhand genauerer Merkmale das Device unterschieden