Backupskript laufen lassen
Florian Lohoff
f at zz.de
Thu Jan 31 07:41:20 CET 2019
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 f at zz.de
UTF-8 Test: The 🐈 ran after a 🐁, but the 🐁 ran away
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lug-owl.de/pipermail/linux/attachments/20190131/f02b0284/attachment.sig>
More information about the Linux
mailing list