On Wed, Jan 30, 2019 at 12:52:01AM +0100, Arnd Behring wrote: > Hallo zusammen, > > der Thread zu den Backups von neulich hat mich über folgendes Problem > nachdenken lassen: Nehmen wir an, dass regelmäßig ein Backup (z.B. mit > borg) von einem Laptop auf einen Server im LAN zuhause gemacht werden > soll. Der Server ist von außen über das Internet nicht erreichbar bzw. > es wäre vom Traffic her Unsinn das Backup über das Internet zu machen. > Was wäre eine elegante Möglichkeit, z.B. einmal täglich ein solches > Backup anzustoßen, vorausgesetzt der der Server ist im lokalen Netz > erreichbar? > > Die relevanten Rahmenbedingungen des Problems sind also: > - Der Laptop ist nicht 24/7 an. > - Der Laptop ist, wenn er an ist, nicht notwendigerweise im Heimnetz. > - Der Server ist nur vom Heimnetz aus zu erreichen. > - Das Backup sollte täglich laufen, aber nicht mehrmals täglich. > - Wenn der Server nicht erreichbar ist, sollte es später nochmal > versucht werden. > > Ich habe mir die Fähigkeiten verschiedener Cron-Daemons angeschaut und > einiges (anacron, fcron) geht schon in die richtige Richtung, aber was > ich zum Beispiel noch nicht gefunden habe (wenn ich nicht irgendwas > offensichtliches übersehen habe), wäre eine Möglichkeit den Job bei > Misserfolg später zu wiederholen. > > Ob der Server erreichbar ist, könnte man sicher darüber testen, ob ein > Login per SSH klappt und dann "hostname" den richtigen Hostnamen ausgibt.
Also - ich habe mir ein meinem homedir ein "whereami" script geschrieben
das sich ansieht wo das Notebook Netztechnisch gerade so ist:
WIFIDEV=wlp3s0
wifiap=$(nmcli device show ${WIFIDEV} | sed -ne '/^GENERAL.CONNECTION/ { s/^.*:
*//; p; }')
wifiip=$(nmcli device show ${WIFIDEV} | sed -ne '/^IP4.ADDRESS\[1\]:/ { s/^.*:
*//; p; }')
ETHDEV=enp0s25
ethip=$(nmcli device show ${ETHDEV} | sed -ne '/^IP4.ADDRESS\[1\]:/ { s/^.*:
*//; p; }')
defif=$(/bin/ip r get 8.8.8.8 | sed -ne '/dev / { s/.* dev //; s/ .*$//; p; }')
via=$(ip r get 8.8.8.8 | sed -ne '/ via / { s/.* via //; s/ .*$//; p; }')
defneigh=$(ip neigh show ${via} | sed -ne '/ lladdr / { s/.* lladdr //; s/
.*$//; p; }')
location="unknown"
bandwidth="low"
case "${wifiap}" in
*buero*)
location="buero"
bandwidth="high"
;;
*goodkarma*)
location="whereever"
bandwidth="low"
;;
*home*)
location="heideweg"
bandwidth="low"
;;
*)
#echo "Unknown wifiap ${wifiap}"
;;
esac
if [ "${location}" = "unknown" ]; then
case "${defneigh}" in
"00:12:5f:00:01:0f")
location="buero"
bandwidth="high"
;;
esac
fi
case "${defif}" in
en*|eth)
physconnection=ethernet
;;
wl*)
physconnection=wifi
;;
*)
physconnection=unknown
;;
esac
echo location=$location
echo bandwidth=$bandwidth
echo physconnection=$physconnection
echo defaultif=$defif
echo defaultvia=$via
echo defaultviamac=$defneigh
exit 0
Dann rufe ich via cron alle 2 Stunden ein script auf ~/bin/backup-conditional
eval $(~/bin/whereami)
case "${bandwidth}" in
medium|high)
sudo -n /usr/local/sbin/borg-backup-pax
exit
;;
esac
case "${location}" in
buero)
sudo -n /usr/local/sbin/borg-backup-pax
;;
heideweg)
sudo -n /usr/local/sbin/borg-backup
;;
esac
Das was dir jetzt noch fehlt ist ein touch auf eine datei und nachsehen
ob die älter als 24h ist bevor das backup-conditional das backup wirklich
anstößt.
Ich mache wirklich alle 2 Stunden ein Backup.
Das ist z.b. ein Backup von gestern kurz bevor ich nach hause gegangen bin
(borg-backup)
Jan 29 17:29:03 p4 borg-pax:
------------------------------------------------------------------------------
Jan 29 17:29:03 p4 borg-pax: Archive name: sys-201901291715
Jan 29 17:29:03 p4 borg-pax: Archive fingerprint:
e69e1d8de9c01b40f64277d307eee4864334110219e682b38b4c6d055696a651
Jan 29 17:29:03 p4 borg-pax: Time (start): Tue, 2019-01-29 17:15:57
Jan 29 17:29:03 p4 borg-pax: Time (end): Tue, 2019-01-29 17:28:53
Jan 29 17:29:03 p4 borg-pax: Duration: 12 minutes 56.43 seconds
Jan 29 17:29:03 p4 borg-pax: Number of files: 1549962
Jan 29 17:29:03 p4 borg-pax:
------------------------------------------------------------------------------
Jan 29 17:29:03 p4 borg-pax: Original size
Compressed size Deduplicated size
Jan 29 17:29:03 p4 borg-pax: This archive: 144.15 GB
79.27 GB 120.96 MB
Jan 29 17:29:03 p4 borg-pax: All archives: 2.74 TB
1.59 TB 217.43 GB
Jan 29 17:29:03 p4 borg-pax:
Jan 29 17:29:03 p4 borg-pax: Unique chunks Total
chunks
Jan 29 17:29:03 p4 borg-pax: Chunk index: 1574794
24556478
Jan 29 17:29:03 p4 borg-pax:
------------------------------------------------------------------------------
Von den 144GByte auf der Platte mussten 120MByte wirklich gesichert werden nach
der deduplizierung. Das dingen läuft so unbemerkt im Hintergrund - soll der
doch alle 2 Stunden sichern. Die deduplizierung und das expire auf dem Server
führt dann dazu das da nicht viel von über bleibt.
Flo
--
Florian Lohoff [email protected]
UTF-8 Test: The 🐈 ran after a 🐁, but the 🐁 ran away
signature.asc
Description: PGP signature
-- Linux mailing list [email protected] subscribe/unsubscribe: https://lug-owl.de/mailman/listinfo/linux Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo
