wergor
connoisseur de mimi
|
im moment benutze ich ein kleines script, mit dem ich in unregelmäßigen abständen ein backup der system- ssd meines servers mache: #!/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
|
Ich mach das auf meinem öffentlichen Server so: 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
AdministratorGNUltra
|
Ich hab privat auf jedem meiner zu sichernden Hosts ein Script /usr/local/sbin/boxtotar: #!/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: 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): #!/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
|
Ist alles ein Filesystem weils nur ein winziger VPS ist.
|
COLOSSUS
AdministratorGNUltra
|
/, /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
|
/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 : rsync -aAvXx --delete /* remoteserver.bla:/backups/ --exclude={/tmp/*,/run/*,/lost+found}
|
wergor
connoisseur de mimi
|
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 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. 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.: [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
|
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
|
danke für den tipp, skirpt ist geändert aber was mache ich jetzt mit den symlinks?
|
-=Willi=-
The Emperor protects
|
./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
|
ich denke die / machen probleme. ich kann die links von hand löschen, sind aber leider ca 80.
|
-=Willi=-
The Emperor protects
|
Ich würds so machen: find . -type l -exec rm -f {} +
Alle Angaben sind wie immer ohne Gewähr (aber hier vielleicht mit Gewehr ).
|
wergor
connoisseur de mimi
|
hat funktioniert, danke!
|
wergor
connoisseur de mimi
|
gibts eine möglichkeit, rsync in ein archiv "hinein kopieren" zu lassen?
|
Lukas
Here to stay
|
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`
|