Art Vandelay
Lieutenant
- Registriert
- Apr. 2020
- Beiträge
- 807
Hallo,
ich fummele mich grade in einem Bash Script auf dem Raspi zurecht, es ist grausam. In der Windows Powershell Welt wäre es so einfach, aber die läuft auf dem Raspi1 noch nicht, also muss es ein Bash Script sein.
Ich habe ein Backup Script, das via rsync ein Verzeichnis von einem anderen System (USB Stick an Fritzbox) synchronisiert. Nun möchte ich, dass nur bei Veränderungen des synchronisierten Verzeichnisses die weiteren Schritte ausgeführt werden (Verzeichnis mit 7z packen und in eine Cloud sichern). Natürlich könnte ich das auch stupide immer durchrennen lassen, aber wäre sehr unnötig, wenn es nur hin und wieder mal Veränderungen im Backup Verzeichnis gibt.
Meine Idee: Ich frage ab ob es geänderte Dateien im Backup Verzeichnis gibt, hierfür gibt es ja den Befehl
Dieser gibt mir aus, ob es im Verzeichnis /data/verz geänderte Dateien in den letzten 24h gibt.
Nur wie kann ich diese Information im Script auswerten?
Die Variable $? gibt immer eine 0 aus, egal was der find Befehl ausspuckt.
Ich hatte auch die Idee die Ausgabe des find Befehls in eine Datei umzuleiten und dann abzufragen ob die Datei existiert. Dummerweise wird die Datei immer erzeugt, auch ohne Inhalt. Also läuft der folgende Code immer in die Then Bedingung rein
Also wie löse ich diese Banalität?
Mit Powershell würde ich es ganz easy so lösen:
ich fummele mich grade in einem Bash Script auf dem Raspi zurecht, es ist grausam. In der Windows Powershell Welt wäre es so einfach, aber die läuft auf dem Raspi1 noch nicht, also muss es ein Bash Script sein.
Ich habe ein Backup Script, das via rsync ein Verzeichnis von einem anderen System (USB Stick an Fritzbox) synchronisiert. Nun möchte ich, dass nur bei Veränderungen des synchronisierten Verzeichnisses die weiteren Schritte ausgeführt werden (Verzeichnis mit 7z packen und in eine Cloud sichern). Natürlich könnte ich das auch stupide immer durchrennen lassen, aber wäre sehr unnötig, wenn es nur hin und wieder mal Veränderungen im Backup Verzeichnis gibt.
Meine Idee: Ich frage ab ob es geänderte Dateien im Backup Verzeichnis gibt, hierfür gibt es ja den Befehl
Bash:
find /data/verz -type f -mtime -1
Nur wie kann ich diese Information im Script auswerten?
Die Variable $? gibt immer eine 0 aus, egal was der find Befehl ausspuckt.
Ich hatte auch die Idee die Ausgabe des find Befehls in eine Datei umzuleiten und dann abzufragen ob die Datei existiert. Dummerweise wird die Datei immer erzeugt, auch ohne Inhalt. Also läuft der folgende Code immer in die Then Bedingung rein
Bash:
TMPFILE=/data/tmp.txt
find /data/verz -type f -mtime -1 > $TMPFILE
if [ -f "$TMPFILE" ]; then
<BACKUP ANWEISUNGEN>
fi
rm $TMPFILE
Also wie löse ich diese Banalität?
Mit Powershell würde ich es ganz easy so lösen:
PowerShell:
if (ls -path c:\data\verz | where {$_.LastWriteTime -gt (get-date).AddDays(-2)})
{<BACKUP ANWEISUNGEN}