"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

backup von /

wergor 26.09.2014 - 16:12 2986 16
Posts

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4028
im moment benutze ich ein kleines script, mit dem ich in unregelmäßigen abständen ein backup der system- ssd meines servers mache:
Code:
#!/bin/bash

NOW=$(date +"%Y-%m-%d")
dd if=/dev/sde of=/storage/centos_backup/dd_$NOW.img
das ist aber nicht gerade gerade eine optimale lösung:
  • swap und /boot werden mit backup'd.
  • / ist ein lvm, an eizelne dateien davon ranzukommen ist nicht gerade trivial
  • wie ich höre, soll dd eines gemouteten volume keine gute idee sein.
wie würdet ihr ein backup von / machen?

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Ich mach das auf meinem öffentlichen Server so:
Code:
rsync -aAXv --delete /* remoteserver.bla:/backups/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

Da nimmt er das wichtigste mit und macht auch nur ein Delta-Update der veränderten Daten daher gehts ziemlich fix.

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11913
Ich hab privat auf jedem meiner zu sichernden Hosts ein Script /usr/local/sbin/boxtotar:

Code:
#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
test -t 0 && echo "stdout is a tty - bye." && exit 1
nice -n20 tar cp --wildcards --exclude="*_nobak*" --lzop --one-file-system --ignore-failed-read --checkpoint=10000 $(awk '/^\/dev/{print $2}' /proc/mounts)

In den ~/.ssh/authorized_keys von root gibt es einen RSA-Pubkey mit einem Forced Command:
Code:
command="/usr/local/sbin/boxtotar",no-pty,no-port-forwarding ssh-rsa AAAAB3NzaC1yc2EAAA[...]1glBYf6w== Used for creating backups.

Und am Endpunkt hab ich einen Cronjob, der pro Host, auf dem dieses Setup ausgerollt ist, dieses Script ein Mal pro Woche ausfuehrt (ein Backup wird nur dann angefertigt, wenn mehr als ~8GB Speicher auf dem Zieldateisystem frei sind - andernfalls werde ich durch cron via mail benachrichtigt):
Code:
#!/bin/bash
[[ -z ${1} ]] && exit 1
set -e
tdir="${HOME}/backup/${1}"
mkdir -p "${tdir}"
set -o noclobber

if df -Pk "${tdir}" | awk '{if(NR==2){if($2 > 8192000){exit 0}else{exit 1}}}'
then
    nice -n 15 ssh -c aes128-ctr -oCompression=no -oBatchMode=yes -i ${HOME}/.ssh/network_backup_id root@"${1}" /usr/local/sbin/boxtotar > "${tdir}/${1}_$(date +%F).tar.lz"
    retval="$?"
    if [[ ${retval} == 0 ]]
    then
	find "${tdir}" -mtime +22 -a -type f -delete
    fi
    exit "${retval}"
else
    printf '%s has insufficient free diskspace for completing the scheduled job.\n' "${tdir}" 1>&2
    exit 1
fi

So hab ich relativ aufwandslos die letzten drei Wochen Retention Time, mit woechtentlicher Granularitaet. "Wichtige" Sachen haben auch noch elaboriertere, andere und taegliche Backup-Mechanismen - aber das hier reicht fuer die meisten Dinge..



@Willi: statt dem ganzen exclude-Voodoo koenntest du evtl. --one-file-system verwenden.

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Ist alles ein Filesystem weils nur ein winziger VPS ist.

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11913
/, /dev/, /proc/ und /sys/ sind auf modernen Kernels/Distros nie nur ein Dateisystem. /run/ ist auch meist(immer?) tmpfs, /tmp/ oft, und /mnt/ und /media/ hast du wohl drin, um etwaige temp. Mounts nicht ins Backup zu ziehen.

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
/run/, /tmp/, /mnt/ und /media/ sind leider kein tmpfs aber trotzdem verkürzt sich die Liste. /mnt/ und /media/ hab ich auch mal rausgetan weil ich dort eig. schon lang nix mehr mounte. Sieht jetzt so aus :):
Code:
rsync -aAvXx --delete /* remoteserver.bla:/backups/ --exclude={/tmp/*,/run/*,/lost+found}

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4028
danke für die tipps.
ich habe mir schon mal überlegt das backup mit rsync zu machen, aber mit dd war es zu schnell erledigt deshalb habe ich in die richtung nicht weitergemacht :rolleyes:
das backup von / mache ich nur auf das im gleichen gerät verbaute raid5 (und kopiere diese backups in unregelmäßigen abständen auf eine externe hdd), außerdem hätte ich gerne zumindest die letzten paar backups griffbereit. ists möglich mit rsync gleich direkt in ein tar- archiv zu kopieren?

@colo deinen code muss ich mir noch genauer anschauen, da verstehe ich nicht alles. ein paar sachen kann ich davon sicher übernehmen, z.b. den speicherplatzcheck.

edit: habe jetzt einen versuch mit rsync gestartet.
Code:
rsync -aAX --one-file-system --exclude={/boot,/tmp,/run,/mnt,/media,/lost+found} /* /storage/centos_backup/backup_$NOW
--one-file-system wurde von rsync dezent ignoriert, nicht nur hat rsync versucht mein raid auf mein raid zu sichern, jetzt habe ich einige symlinks die sich nicht löschen lassen, z.b.:
Code:
[root@localhost links]# find -type l | xargs rm
rm: cannot remove `./dev/.udev/links/diskx2fby-idx2fdm-name-vg_homeserver-lv_root/b253:0': No such file or directory
meine letzte rm- spielerei mit symlinks war nicht so toll, deshalb warte ich lieber auf input von den spezialisten :)
Bearbeitet von wergor am 29.09.2014, 20:26

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Das --one-file-system wird nicht ignoriert, aber es wird jedes Argument einzeln betrachtet. Wenn du ihm also /* gibst, ist es so, als ob du es für jedes Argument einzeln aufrufen würdest. Wenn es also zu /dev kommt, wird von dort alles gesynced, nur weiter unten gemountete Filesysteme werden übersprungen, z.B. /dev/pts.

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4028
danke für den tipp, skirpt ist geändert :)
aber was mache ich jetzt mit den symlinks?

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
./dev/.udev/links/diskx2fby-idx2fdm-name-vg_homeserver-lv_root/b253:0 gibt es aber rm sagt "No such file or directory"?

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4028
ich denke die / machen probleme. ich kann die links von hand löschen, sind aber leider ca 80.

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Ich würds so machen:
Code:
find . -type l -exec rm -f {} +
Alle Angaben sind wie immer ohne Gewähr (aber hier vielleicht mit Gewehr :D).

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4028
hat funktioniert, danke!

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4028
gibts eine möglichkeit, rsync in ein archiv "hinein kopieren" zu lassen?

Lukas

oc.at addicted
Avatar
Registered: Feb 2004
Location: Kunsan AB
Posts: 1883
Du kannst rsync ein lokales Verzeichnis als destination geben und dieses danach mit tar archivieren und ggf. komprimieren. rsync kann auch "on-the-fly" komprimieren, Parameter -z oder --compress, mehr dazu unter `man rsync`
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz