SQLite.db sichern

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    Ich habe auf meinem Pi Raspian laufen. im Verzeichnis \var\db\datenbank.db liegt meine SQLite Datenbank.
    Ich würde gerne von dieser DB regelmässig ein Backup auf den USB Stick kopieren. Wenn möglich immer die letzten 3 Sicherungen.
    Täglich ein Backup im laufenden Betrieb.

    Kann mir jemand helfen dafür ein script zu schreiben?

    mfg
    Markus

    • Offizieller Beitrag

    Wie hast du denn bis jetzt? Um Helfen zu können muss man sich ja irgendwo lang hangeln. Wenn du noch gar nichts hast, welche Möglichkeiten hast du dir bis jetzt erlesen und welche präferierst du?

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Ich würde python bevorzugen.
    Hab auch eine Variante gefunden.

    Kann man das so verwenden?
    Wobei man "def get_arguments" weglassen könnte und die beiden variablen statisch definieren könnte.

    Wie man das allerdings dann in Raspian einbaut damit es täglich in der Nacht läuft weiss ich nicht.


    Einmal editiert, zuletzt von fuxl66 (1. März 2017 um 08:48)

  • Ich würde python bevorzugen.

    Ich nicht... weils 'nen klassisch-banales Bagatellproblem ist... Bash und Cron können das perfekt. Schau Dir diese Befehle mal an:

    Code
    echo `date --date= +"%j"`
    echo `date --date="-3 day" +"%j"`


    Da wird einmal der aktuelle Tag des Jahres zurückgegeben, und beim zweiten Aufruf der Tag heute minus 3. Darauf aufbauend würde ich die folgende Variante untersuchen. Zuerst mit Tag-Heute das Backup anlegen, dann mit TagHeute-3 das viert-älteste Backup löschen.

    Code
    d=`date --date= +"%j"`
    cp quelle ziel.$d
    
    
    d=`date --date="-3 day" +"%j"`
    [ -f "ziel.$d" ] && rm ziel.$d

    Das ist jetzt hier ein Vorschlag ohne Gewähr.... auf die Schnelle hingeschrieben. Bei Monatswechsel klappt das gut, bei Jahreswechsel müsste man das explizit untersuchen. Ob weitere Parameter bei cp und rm notwendig sind, kannst Du mit der man-page überprüfen. Ob quotes notwendig sind, kannst nur Du selber ermitteln.

    Einmal editiert, zuletzt von WinterUnit16246 (1. März 2017 um 18:05)

  • +1 für den Ansatz, aber ..

    <erbsenzaehl on>
    2 Anmerkungen:
    Besser man vermeidet Backticks, die meistens schlecht zu lesen und somit fehlerträchtig sind und das --date für den aktuellen Tag ist überflüssig.
    Also

    Code
    d=$(date +'%j')

    Das $() ist POSIX-konform und wird so von allen POSIX-Shells erkannt, Backticks nicht zwingend.
    <erbsenzaehl />

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (1. März 2017 um 18:42)

  • Das überflüssige --date war einfach ein Überbleibsel von zuwenig "Backspaces", und die Syntax $() nutze ich selber eigentlich immer. Ich gestehe, ich war einfach nur faul und habe ne Zeile aus dem erstbesten Uralt-Beispiel-Script rauskopiert und mit grober Feile zurechtgeschliffen...

    Danke für die Hinweise..... ;)

    Einmal editiert, zuletzt von WinterUnit16246 (1. März 2017 um 19:13)

  • Ich habe jetzt ein Python Script nach meinen Bedürfnissen angepasst und es läuft wie erwartet via Kommandozeile.
    (Backuppfad muss natürlich noch ausgelagert werden)

    Wie kann ich dieses Script nun per cron täglich mit meinem User um 01:00 Uhr laufen lassen bzw. in den Systemstart integrieren?

    mfg
    Markus

    Einmal editiert, zuletzt von fuxl66 (21. März 2017 um 06:54)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!