Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Backupscript für nur eine wichtige Textdatei

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
ichHabMalNeFrage
Newbie
Newbie
Beiträge: 11
Registriert: 5. Mär 2017, 08:36

Backupscript für nur eine wichtige Textdatei

Beitrag von ichHabMalNeFrage » 7. Mai 2018, 08:57

Hallo, lange nicht mehr hier gewesen...

Ich brauche ein Backupscript für nur eine wichtige Textdatei.
Alle 24 Stunden soll eine Backup (mit einem Timestamp(*)) angelegt werden,
und, falls möglich, soll auch eine E mail an mich gesendet werden... mit dem Verlauf.
Ich dachte an Bash-Script und Cronjobs - aber gibt es vielleicht ein "CLI"tool, das das machen kann - und falls ja, welches?

Werft mich doch mal in die richtige Richtung. :ops:

Grüße

Anmerkung: Hoffentlich in der richtigen Subkategorie geschrieben

(*) Und vielleicht auch mit "Fehlerkorrigierenden Codes"...

Werbung:
marce
Advanced Hacker
Advanced Hacker
Beiträge: 1023
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von marce » 7. Mai 2018, 09:10

Hast Du schon ein anderes Backuptool auf dem System laufen? Wenn ja - würde ich das dafür verhaften.

Ansonsten - für eine einzelne Datei braucht's dann nur eine einzelne Zeile in der crontab - "der Rest" (Mail, Liste, ...) kommt bei passender Systemkonfiguration quasi automatisch mit.

ichHabMalNeFrage
Newbie
Newbie
Beiträge: 11
Registriert: 5. Mär 2017, 08:36

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von ichHabMalNeFrage » 7. Mai 2018, 12:13

marce hat geschrieben:
7. Mai 2018, 09:10
Wenn ja - würde ich das dafür verhaften.
Wieso denn das? Nein, kein bisheriges Backuptool.
marce hat geschrieben:
7. Mai 2018, 09:10
für eine einzelne Datei braucht's dann nur eine einzelne Zeile
Ich hätte aber gern ein tool dafür.
marce hat geschrieben:
7. Mai 2018, 09:10
in der crontab
In der crontab wäre aber ein referenziertes Script besser...
marce hat geschrieben:
7. Mai 2018, 09:10
"der Rest" (Mail, Liste, ...) kommt bei passender Systemkonfiguration quasi automatisch mit.
Das System ist schon "passend" konfiguriert.

Ich beschreibe nochmal die oben etwas "ungenau" angegebenen funktionalen Anforderungen:

- jede 24 Stunden ein Backup einer Textdatei erstellen
- naming der Textdatei...
- prooving der Textdatei (bei "Bit-/Byte"dreher"" wiederherstellbar)...
- Archivierung der Textdatei...
- Verschlüsselung der Textdatei (AES256(cbc) ausreichend)...
- Protokollierung jedes Vorgangs an meine E mail...

Realisierbar?

Gräfin Klara
Hacker
Hacker
Beiträge: 314
Registriert: 23. Jun 2008, 20:51

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von Gräfin Klara » 7. Mai 2018, 15:51

ichHabMalNeFrage hat geschrieben:
7. Mai 2018, 12:13
Ich beschreibe nochmal die oben etwas "ungenau" angegebenen funktionalen Anforderungen:

- naming der Textdatei...
- prooving der Textdatei (bei "Bit-/Byte"dreher"" wiederherstellbar)...
Ich verstehe das nicht.

ichHabMalNeFrage
Newbie
Newbie
Beiträge: 11
Registriert: 5. Mär 2017, 08:36

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von ichHabMalNeFrage » 7. Mai 2018, 17:05

In Python (3.x aufwärts) für Windows und über Anpassung des Pfads auch für Linux hab ich mir das so gedacht (noch einige Unschönheiten enthalten):

Code: Alles auswählen

from pathlib import Path
from subprocess import call
import sys
import time
import datetime

try:
    # file_name = "wichtige_textdatei.txt"
    file_name = sys.argv[1]
    file_name_2 = file_name[:-4]
    file_for_back = Path(file_name)
    if file_for_back.is_file():
        time_se = int(time.time())
        time_day = datetime.datetime.fromtimestamp(time_se).day
        time_hour = datetime.datetime.fromtimestamp(time_se).hour
        file_name_3 = "{:s}-{:011d}-{:02d}-{:02d}.7z".format(
            file_name_2, time_se, time_day, time_hour)
        call(["C:\\Program Files\\7-Zip\\7z.exe", "a", r"-p\{12345\}", file_name_3, file_name])
        print("Suc:", Path(file_name_3))
    else:
        print("Failure:", "File does not seem to exist")
except:
    print("An error:", sys.exc_info()[0])
Dabei ist das mailing noch weggelassen.

Gräfin Klara hat geschrieben:
7. Mai 2018, 15:51
Ich verstehe das nicht.
naming = sinnvolle Backupdateinamen
prooving = wenn man in der Textdatei bspw ein Zeichen ändert, dann soll das mithilfe einer check sum wiederrückgängig gemacht werden können

Nun ist eine Zeichenänderung mind eine Byteänderung, deswegen befürchte ich da :ops:

uhelp
Member
Member
Beiträge: 89
Registriert: 25. Nov 2012, 19:33

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von uhelp » 7. Mai 2018, 18:17

Ich denke, du machst einige Denkfehler.

Wenn du eine Datei kopierst, und der Kopierjob erfolgreich verläuft, IST schon sichergestellt, dass die Dateien identisch (von Inhalt her) sind. (von Hardwareprobleme abgesehen)

Wenn du eine Datei per Script verschlüsseln willst, so muss das Passwort irgendwie verfügbar sein.
Das ist vorsätzliche Unsicherheit.

Wenn du aus einer Konsole Mails verschicken willst, so kann das JEDES Linuxdistri von Haus aus.
Aber meist sind nur lokale Mails zugelassen, da jeder anständige Mailprovider solche Mails ablehnen wird.
Du müsstest also einen __wirklich__ __richtigen__ Mailaccount dafür verwenden.
Also kennt dein BackupScript schon ZWEI Spasswörter.
Das ist doppelt vorsätzliche Unsicherheit.

Wenn du zwei Dateien auf Gleichheit prüfen willst, so hat jede Distri die folgenden Programme parat: sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, md5sum.
Und alle diese Programme können nicht nur die entsprechende Prüfsumme bilden, sondern auch direkt vergleichen.
Das wäre also in einem Shellscript grade mal ein Einzeiler, der nebenbei noch den gewüschten Dateinamen bilden kann.
Sowas, wie

Code: Alles auswählen

dummCommand --ganzarg meinNeuerDateiName_$(date +"%Y-%m-%d_%H:%M)
Natürlich kannst du ein solches Script auch sicher schreiben.
Dazu musst du dann aber irgendeine Form von sicherem Spasswortspeicher basteln/installieren.
Es gibt einige Programme, die effektiv verschlüsseln.
Aber der Aufwand ist insgesamt für eine wichtige Textdatei viel zu groß.

Weshalb eine ordentliche Backuplösung zu bevorzugen ist.
borgbackup könnte das alles in einem Rutsch. Lediglich ein systemd.timer muss dafür noch gebastelt werden.
Dann wird das Ding via SSH mit Key transportiert, vollständig dedupliziert, und du kannst den Backup JEDEN Tages einfach mounten.
Die Archive sind spasswortgeschützt und verschlüsselt.

Es gibt aber auch unzählig andere Backuplösungen, die das auch alles bieten. (die Deduplizierung von borg erreichen sie jedoch nicht).

Gräfin Klara
Hacker
Hacker
Beiträge: 314
Registriert: 23. Jun 2008, 20:51

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von Gräfin Klara » 7. Mai 2018, 21:21

ichHabMalNeFrage hat geschrieben:
7. Mai 2018, 17:05
In Python (3.x aufwärts) für Windows und über Anpassung des Pfads auch für Linux hab ich mir das so gedacht (noch einige Unschönheiten enthalten):
Das ist hässlich!
Schreib dein script in bash, 10-15 Zeilen sollten genügen
ichHabMalNeFrage hat geschrieben:
7. Mai 2018, 17:05
naming = sinnvolle Backupdateinamen
prooving = wenn man in der Textdatei bspw ein Zeichen ändert, dann soll das mithilfe einer check sum wiederrückgängig gemacht werden können
Nun ist eine Zeichenänderung mind eine Byteänderung, deswegen befürchte ich da :ops:
Dein "prooving" funktioniert so nicht und du brauchst es auch nicht.

Wie eine Frau das machen würde:

1. Diese heikle Datei in die Backupumgebung kopieren und die Kopie prüfen. Das ist eine simple Scriptzeile.
2. Kopierte Datei verschlüsseln.
Das ist ein wenig komplizierter, weil du mit einem öffentlichen Schlüssel arbeiten mußt und du diesen Vorgang auch verstehen sollst,
sonst kannst du die Datei nicht mehr entschlüsseln.
3. Aus dieser verschlüsselten Datei eine komprimierte Datei erstellen und gleichzeitig diesem Archive einen Namen geben, z.B 2018-05-07_irgendwas.bz2
Ist auch nur ein Einzeiler.
4. Mail absetzen mit Betreff und einer schönen Statusmeldung. Ist unter Linux keine Hexerei.
5. Dieses script als job in deinen cron einbauen. Ist nicht schwierig,
Fertig

Entspricht das deinen Anforderungen?

ichHabMalNeFrage
Newbie
Newbie
Beiträge: 11
Registriert: 5. Mär 2017, 08:36

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von ichHabMalNeFrage » 8. Mai 2018, 10:58

Mir ist noch etwas eingefallen...

NUR wenn der Änderungszeitpunkt der Textdatei größer gleich AktuelleZeitInSekunden - 60*60*1Sekunden ist, soll ein Backup erstellt werden... Also... nur wenn die Textdatei nicht älter als eine Stunde ist, denn dann/sonst wurde bereits ein Backup erstellt - und ein neues muss nicht erstellt werden. :irre:

Wetten dass das in der Bash nicht so ohne Weiteres möglich ist? :p

uhelp hat geschrieben:
7. Mai 2018, 18:17
Ich denke, du machst einige Denkfehler.
Ich würd das nicht nach ein paar Beiträgen beurteilen wollen, ob ich einen Schaden habe. :roll:

marce
Advanced Hacker
Advanced Hacker
Beiträge: 1023
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von marce » 8. Mai 2018, 11:21

ichHabMalNeFrage hat geschrieben:
8. Mai 2018, 10:58
Wetten dass das in der Bash nicht so ohne Weiteres möglich ist? :p
Wette verloren.

ichHabMalNeFrage hat geschrieben:
8. Mai 2018, 10:58
uhelp hat geschrieben:
7. Mai 2018, 18:17
Ich denke, du machst einige Denkfehler.
Ich würd das nicht nach ein paar Beiträgen beurteilen wollen, ob ich einen Schaden habe. :roll:
Von "Schaden haben" hat keiner geredet.

Dein Konzept klingt trotzdem nicht ausgereift, durchdacht - kann aber dran liegen, daß wir nicht alle Infos haben, die notwendig sind.

So oder so - alles was Du willst ist technisch problemlos umsetzbar. Manches davon klingt für mich nach "warum auch immer" oder "falscher Ansatz" - aber das musst Du für Dich wissen.

abgdf
Guru
Guru
Beiträge: 3073
Registriert: 13. Apr 2004, 21:15

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von abgdf » 8. Mai 2018, 15:48

marce hat geschrieben:
8. Mai 2018, 11:21
ichHabMalNeFrage hat geschrieben:
8. Mai 2018, 10:58
Wetten dass das in der Bash nicht so ohne Weiteres möglich ist? :p
Wette verloren.
Jo:

Code: Alles auswählen

#!/bin/bash
filename="myfile.txt"
nowsecs=$(date +%s)
filesecs=$(stat -c "%Y" $filename)
diffsecs=$(expr $nowsecs - $filesecs)
onehour=3600
if test $diffsecs -gt $onehour
then
    echo "'$filename' is older than one hour."
else
    echo "'$filename' is not older than one hour."
fi
Aber Python ist schon ok. Macht Vieles einfacher als in bash. Aber bitte Version 2.7, und nicht so'n 3.x-Kram.

Benutzeravatar
robi
Moderator
Moderator
Beiträge: 3159
Registriert: 25. Aug 2004, 02:13

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von robi » 9. Mai 2018, 14:40

abgdf hat geschrieben:
8. Mai 2018, 15:48
Aber Python ist schon ok. Macht Vieles einfacher als in bash. Aber bitte Version 2.7, und nicht so'n 3.x-Kram.
Wenn es einfacher ist sich mit Programmiersprachen rumzuschlagen die sich überhaupt keine Mühe mehr geben mit sich selbst kompatibel zu sein. ;)

Aber auch mit der Bash muss man nicht so rumeiern, und mit stat die Zeiten aus der Datei holen mit der von date vergleichen und das dann noch in eine if Verzeigung packen. geht's noch, dafür gibt es solche Hammerbefehle wie find, die machen das nebenbei alles in einem Aufruf.

Code: Alles auswählen

find "$MY_PATH" -mmin +60 -name "$FILE_NAME" -exec scp {}  ${B_PATH}/${FILE_NAME%.txt}.$(date +"%Y-%m-%d_%H:%M")   \;
Ich würde ja auch gerne noch Komprimierung, Signierung der Datei inclusive seiner Checksumme mit einem x509 Certifikat und eventuell noch weitere Sicherheitsmerkmale und Zugriffsbeschränkungen in weiteren Script-Zeilen einbauen, aber eines versehe ich hier überhaupt nicht, deshalb lasse ich das mal.

Wieso benötigte ich denn für eine Datei die sich ständig (oder zumindest ab und zu mal) ändert, die ohne irgendwelche Hindernisse jederzeit problemlos auszulesen zu sein scheint( eventuell sogar von jedermann), ein verschlüsseltes Hochsicherheits-Backup bei dem jegliches schief-anschauen mit protokolliert wird, und das Alles dann auch noch auf dem selben Rechner? Das ist doch als wenn man täglich das Geld das auf dem Tisch liegend fotografiert, und dann die Fotos anschließen im Safe aufbewahrt, das Geld aber immer auf dem Tisch liegen bleibt. :???:

robi

abgdf
Guru
Guru
Beiträge: 3073
Registriert: 13. Apr 2004, 21:15

Re: Backupscript für nur eine wichtige Textdatei

Beitrag von abgdf » 9. Mai 2018, 18:29

robi hat geschrieben:
9. Mai 2018, 14:40
Aber auch mit der Bash muss man nicht so rumeiern, und mit stat die Zeiten aus der Datei holen mit der von date vergleichen und das dann noch in eine if Verzeigung packen. geht's noch, dafür gibt es solche Hammerbefehle wie find, die machen das nebenbei alles in einem Aufruf.
Wohl wahr, ich bin halt nicht so der bash-Freund oder -Experte, der jede noch so versteckte Option von "find" kennt.

Aber letztlich ist insgesamt auch ähnlicher C-Code in "find". Ob man solchen Code nun in einem Befehl aufruft oder ähnlichen Code aus mehreren Befehlen zusammenstöpselt, ist letztlich auch kein großer Unterschied. Sofern es nicht auf Performance ankommt.
Mir macht es auch nichts aus, ein paar Zeilen mehr zu schreiben, ich muß nicht alles in eine Zeile packen.
"Explicit is better than implicit" ist ein Grundsatz in Python, "terse syntax" ist nicht so gefragt, da später auch schwerer zu warten. Erinnert man sich in 6 Monaten noch, was diese find-Zeile mit den vielen Optionen macht? Am Ende müßte man dann 'eh einen Kommentar dazuschreiben, was sie eigentlich tut.
Ich würde den Code auch gern in einer Funktion "checkFileAge()" oder so kapseln.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste