Hallo zusammen,
Ich möchte innerhalb eines Scripts abfragen ob rsync etwas kopiert hat. Falls ja sollte eine weiter Funktion folgen.
Gibt es eine einfache Methode abzufragen ob rsync etwas kopiert hat oder muss ich mit --stats das Ergebnis in eine Hilfsdatei schreiben und innerhalb dieser Datei suchen ob etwas kopiert wurde (Bsp. Suche nach "100%" oder "to-chk=1/")?
Die Hilfsdatei wäre etwas umständlich, ist aber die einzige Idee welche ich aktuell habe. In der Manpage hab ich hierzu nichts finden können. Gibt es einen einfachen Return Wert welchen man abfragen kann?
[gelöst] rsync if Abfrage (wenn rsync etwas kopiert dann...)
[gelöst] rsync if Abfrage (wenn rsync etwas kopiert dann...)
Zuletzt geändert von joe2017 am 10.09.2019 10:07:37, insgesamt 1-mal geändert.
- MegaV0lt
- Beiträge: 173
- Registriert: 21.11.2011 11:16:07
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: rsync if Abfrage (wenn rsync etwas kopiert dann...)
Ich hahbe in meinem Backup-Skript eine Abfrage drin:
Auszug:
Im Skript ab Zeile 679
https://github.com/MegaV0lt/MV_Backup
Auszug:
Code: Alles auswählen
# Mittels dryRun überprüfen, ob sich etwas geändert hat
echo "Prüfe, ob es Änderungen zu $LASTBACKUP gibt…"
TFL="$(mktemp "${TMPDIR}/tmp.rsync.XXXX")"
rsync "${RSYNC_OPT_SNAPSHOT[@]}" --dry-run --exclude-from="$EXFROM" \
--link-dest="$LASTBACKUP" "$SOURCE" "$TMPBAKDIR" &> "$TFL"
# Wenn es keine Unterschiede gibt, ist die 4. Zeile immer diese:
# sent nn bytes received nn bytes n.nn bytes/sec
mapfile -n 4 -t < "$TFL" # Einlesen in Array (4 Zeilen)
if [[ ${MAPFILE[3]} =~ sent.*bytes.*received.*bytes.* ]] ; then
echo '==> Keine Änderung! Keine Sicherung erforderlich!'
echo "==> Aktuelle Sicherung: $LASTBACKUP"
NOT_CHANGED=1 # Keine Sicherung nötig. Merken für später
fi
rm "$TFL" &>/dev/null
https://github.com/MegaV0lt/MV_Backup
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.
Re: rsync if Abfrage (wenn rsync etwas kopiert dann...)
Hallo MegaV0lt,
danke für den Gedankenanstoß.
Ich habe das jetzt wie folgt gelöst:
Ich lasse mein rsync ein logfile erstellen (--log-file=/tmp/rsync.log).
Ich prüfe ob die zweite Zeile folgendes enthält...
danke für den Gedankenanstoß.
Ich habe das jetzt wie folgt gelöst:
Ich lasse mein rsync ein logfile erstellen (--log-file=/tmp/rsync.log).
Ich prüfe ob die zweite Zeile folgendes enthält...
Code: Alles auswählen
rsyncreturn=`sed '2!n' /tmp/rsync.log`
if [[ $rsyncreturn =~ .*sent.*bytes.*received.*bytes.* ]]; then
echo "Es wurden keine Daten kopiert"
else
echo "Es wurden Daten kopiert"
fi