backup von /

Seite 1 von 2 - Forum: Linux and other OS auf overclockers.at

URL: https://www.overclockers.at/linux/backup-von_240481/page_1 - zur Vollversion wechseln!


wergor schrieb am 26.09.2014 um 16:12

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:
wie würdet ihr ein backup von / machen?


-=Willi=- schrieb am 26.09.2014 um 16:16

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 schrieb am 26.09.2014 um 17:38

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=- schrieb am 26.09.2014 um 17:56

Ist alles ein Filesystem weils nur ein winziger VPS ist.


COLOSSUS schrieb am 26.09.2014 um 18:15

/, /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=- schrieb am 26.09.2014 um 18:25

/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 schrieb am 29.09.2014 um 17:48

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 :)


Ringding schrieb am 29.09.2014 um 22:15

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 schrieb am 29.09.2014 um 23:45

danke für den tipp, skirpt ist geändert :)
aber was mache ich jetzt mit den symlinks?


-=Willi=- schrieb am 29.09.2014 um 23:53

./dev/.udev/links/diskx2fby-idx2fdm-name-vg_homeserver-lv_root/b253:0 gibt es aber rm sagt "No such file or directory"?


wergor schrieb am 29.09.2014 um 23:56

ich denke die / machen probleme. ich kann die links von hand löschen, sind aber leider ca 80.


-=Willi=- schrieb am 30.09.2014 um 00:03

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 schrieb am 30.09.2014 um 00:33

hat funktioniert, danke!


wergor schrieb am 06.10.2014 um 00:56

gibts eine möglichkeit, rsync in ein archiv "hinein kopieren" zu lassen?


Lukas schrieb am 06.10.2014 um 01:58

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`




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026