12.11.2021 | Linux, Linux Backup
RSYNC – weil es gerade Thema gewesen ist

Gerade wollte ich seit längerem meinen lokalen Webserver sichern. Dazu nutze ich eine zweite SSD, wo ich die MySQL Datenbank und den Web-Root sichere. Für wichtige Projekte gibt es natürlich separate Scripte, aber um mal „eben schnell“ eine Sicherung zu erstellen ist das vollkommen ausreichend. Zudem ist der Kopiervorgang von einer NVME auf eine SSD Platte nicht mehr so zeitaufwändig, wie es früher mit alten SATA oder gar IDE Platten gewesen ist.

Das Script sichert die gesamte Datenbank und im Anschluss den Web-Root. Die Dateivorgänge von rsync werden in eine Logdatei geschrieben, die um ein vorangestelltes Datum ergänzt wird.

Das Shellscript:

#!/bin/bash

sqldump=`date +%F`_all_databases.sql
mysqldump -h localhost -u USER -pPASSWORD --all-databases >> /STORAGE/SSD-500G/backup_mysql/$sqldump

logfile=`date +%F`_logfile.log
/usr/bin/rsync -avuh --stats /var/www/* /STORAGE/SSD-500G/backup_www_lokal/ --log-file=/STORAGE/SSD-500G/$logfile

Die im Script genutzten Optionen von rsync:

  • a (umfasst folgendes)
    • -r kopiert Unterverzeichnisse
    • -l kopiert symbolische Links
    • -p behält Rechte der Quelldatei bei
    • -t behält Zeiten der Quelldatei bei,
    • -g behält Gruppenrechte der Quelldatei bei
    • -o behält Besitzrechte der Quelldatei bei (nur root)
    • -D behält Gerätedateien der Quelldatei bei (nur root)
  • v (Verbose Mode für das Logfile)
  • u (überspringt Dateien, die im Ziel neuer sind)
  • h (besser lesbares Format ~ MByte anstatt Byte / Human readable)
  • –stats (Zusammenfassung am Ende des Sync Vorgangs)

Die Ausgabe mit der erweiterten Statistik:

root@herakles:/STORAGE/SSD-500G # ./backup_local_www.sh 

sending incremental file list

Number of files: 417,177 (reg: 366,791, dir: 50,219, link: 167)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 0
Total file size: 131.66G bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 851.85K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 11.66M
Total bytes received: 52.84K

sent 11.66M bytes  received 52.84K bytes  4.68M bytes/sec
total size is 131.66G  speedup is 11,242.22

Import einer einzelnen Datenbank aus dem SQL Dump

Sollte es notwendig sein, nur eine einzelne Datenbank aus dem SQL Dump wiederherzustellen kann das über die Kommandozeile erfolgen.

root@herakles:/STORAGE/SSD-500G/backup_mysql # mysql -u breit -pXXXXXX --one-database testing < 2021-11-12_all_databases.sql

Dadurch wird aus dem Dump nur die Datenbank „testing“ wiederhergestellt.

geschrieben von Jens

, ,

keine Kommentare