Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Systemlaufwerks-schonende Backups mithilfe rsync

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:
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:
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"
Das ist eine sehr einfach gehaltene Regel, damit ein x-beliebiger USB-Stick immer nach /mnt/usbstick eingebunden wird..

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
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
 
AW: Systemlaufwerks-schonende Backups mithilfe rsync

Hi, dazu hätte ich eine Frage…Ich finde die Idee ziemlich genial bzw. sehr praktisch!

  1. Den USB Stick kann ich doch immer am USB Port anliegen haben, so das z.B. Montags aktualisiert werden kann, Richtig?
  2. Das Programm "rsync" aktualisiert die neuen veränderten Dateien innerhalb des Images bzw. am Ende (auf dem USB Stick) habe ich dann z.B das *.img Format (Backup_sda.img) Richtig?

Warum diese Fragen? Wie so viele haben wir alle eine CF Karte, das bedeutet das Image muss noch auf die CF Karte übertragen werden, ist als solches kein Problem bis auf das ich immer drei Versuche benötige bis es dann tatsächlich funktioniert ;-( und vom Igel auch gelesen werden kann.

Wäre es theoretisch möglich die Backup CF-Karte in einen USB Cardreader zu stecken und mit deinem Know How dort die Daten gleich zu aktualisieren, dann dürften diese aber nicht im *.img Format vorliegen bzw. es dürfte keine Image Datei sein. Würde wahrscheinlich die CF Karte zu sehr belasten ?

Selbst wenn meine Idee nicht realisierbar ist würde ich es so umsetzen wie du es geschrieben hast....hört sich alles sehr gut an.

Danke + Gruß
 
AW: Systemlaufwerks-schonende Backups mithilfe rsync

Super Howto, dennoch ab ich ein kleines Problem. Hab mir jetzt via Serial in UDEV die Regel noch eingebunden, dennoch hab ich das Problem das ich das Image nicht mounten kann.Sprich es sieht wie folgt aus:

mount -o loop /mnt/usbstick/Backup_sda.img /mnt/Backup
mount: you must specify the filesystem type

Geb ich Ext4 oder Ext2 an gibt er mir folgendes aus:

mount -t ext2 -o loop /mnt/usbstick/Backup_sda.img /mnt/Backup
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

dmesg | tail
[79122.318553] sd 8:0:0:0: [sdb] Attached SCSI removable disk
[79123.758068] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null)
[80189.743486] loop: module loaded
[80189.808538] EXT2-fs (loop0): error: can't find an ext2 filesystem on dev loop0.
[80189.829056] EXT4-fs (loop0): VFS: Can't find ext4 filesystem
[80270.507439] EXT2-fs (loop0): error: can't find an ext2 filesystem on dev loop0.
[80270.520699] EXT4-fs (loop0): VFS: Can't find ext4 filesystem
[80371.557692] EXT4-fs (loop0): VFS: Can't find ext4 filesystem
[80379.637064] EXT2-fs (loop0): error: can't find an ext2 filesystem on dev loop0.
[80408.370802] EXT4-fs (loop0): VFS: Can't find ext4 filesystem

Wie kann ich jetzt das Image mounten? Steh gerade selber ein wenig am Schlauch.

Mfg

Edit:

Und weil ich es gerade beim überfliegen sah, 98% werden/können nicht lesen sondern nur kopieren, daher sollte im Script der Pfad auch angepasst werden:

## Wheres the Imagefile to get mounted?
IMAGE="/mnt/usbstick/BACKUP/rpi.img"
 
Zuletzt bearbeitet von einem Moderator:
AW: Systemlaufwerks-schonende Backups mithilfe rsync

Wie kann ich jetzt das Image mounten? Steh gerade selber ein wenig am Schlauch.

Hast Du dein USB Stick formatiert? bzw. welches Format liegt vor, gib mal
Code:
sudo parted -s /dev/sda1 print

folgende Ausgabe solltest Du erhalten: Achtung sda[COLOR=#ff0000]1[/COLOR] ist die Partition von deinem Stick, das muss du vorher auslesen, bei mir ist es sda1. 

root@kdmedia:~# sudo parted -s /dev/sda[COLOR=#ff0000]1[/COLOR] print
Model: Unknown (unknown)
Disk /dev/sda1: 4003MB
Sector size (logical/physical): 512B/512B
Partition Table: loopNumber  Start  End     Size    File system  Flags
 1      0,00B  4003MB  4003MB  [COLOR=#ff0000]ext3
[/COLOR]
 
Ich habe alle meinen externen Medien mit Ext4 versehen da bei mir nur Linux zum Einsatz kommt. Selbst Ext2 / Ext3 lässt sich nicht mounten. Hab das ein bisschen Spät gelesen ;)

Mfg
 
Zurück
Oben