Backups sind nur was für Weicheier, oder?
Ich habe in den letzten Jahren - sehr spät - LVM lieben gelernt. Vorher habe ich es irgendwie nie gebraucht. Aber jetzt, wo ich in mehr und mehr flexiblen Umgebungen unterwegs bin, weiß ich es als leichtgewichtige Lösung zum Umgang mit #Speichermedien sehr zu schätzen.
Zuhause nutze ich es, damit ich Dinge wie Striped und Mirrored Volumes auch ohne viel Resourcen schnell und einfach umsetzen kann.
Aber auch hier will ich hin und wieder ein Backup machen. LVM stellt mir die Möglichkeit mit Snapshots zu arbeiten. Nicht ganz so mega wie ZFS, aber mehr als ausreichend.
Jetzt muss nur noch ein Backup-Skript her. Nichts leichter als das:
#!/bin/bash
KEEP_DAYS=7
VG="datastore" # LVM volume group we are snapshoting
LV="Verena privatestuff learningstuff" # Name of LVM-volume to take a snapshot of
BACKUP_PREFIX="backup-volume" # Prefix of snapshot volume name.
SIZE=10G # Amount of disk space to allocate for the snapshot
# Create new snapshot
TODAY="$(date +%F)"
for i in $LV
do
NEW_VOLUME="$BACKUP_PREFIX-$i-$TODAY"
if ! lvs | grep -q -F "$NEW_VOLUME"; then
/sbin/lvcreate --size $SIZE --permission r --snapshot "$VG/$i" --name "$NEW_VOLUME"
#echo "$NEW_VOLUME"
else
echo "Backup already exists: $NEW_VOLUME"
fi
done
# Clean old snapshots.
# We need to work around debian bug #659762
# See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659762
# We do that by disabling udev while removing snapshots
if service udev status >/dev/null 2>&1; then
UDEV_RUNNING=1
service udev stop >/dev/null 2>&1
else
UDEV_RUNNING=0
fi
for i in $LV
do
lvs -o lv_name --noheadings | sed -n "s@$BACKUP_PREFIX-$i-@@p" | while read DATE; do
TS_DATE=$(date -d "$DATE" +%s)
TS_NOW=$(date +%s)
AGE=$(( (TS_NOW - TS_DATE) / 86400))
if [ "$AGE" -ge "$KEEP_DAYS" ]; then
VOLNAME="$BACKUP_PREFIX$DATE"
/sbin/lvremove -f "$VG/$VOLNAME"
fi
done
done
if [ "$UDEV_RUNNING" = "1" ]; then
service udev start >/dev/null 2>&1
fi
Danke!
Quellen und Links