rclone-backup: fall back to raw copy for non-SQLite DBs

filebrowser's database.db is BoltDB, not SQLite, so sqlite .backup left a
0-byte snapshot. Try .backup and fall back to cp when it isn't SQLite (or
is locked), so every DB gets a usable snapshot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 09:42:38 +02:00
parent 35c02d6920
commit 3d2cfc1be5
+7 -2
View File
@@ -317,8 +317,13 @@
/data/daten/DJing/Data/MusicLibrary.db; do /data/daten/DJing/Data/MusicLibrary.db; do
[ -f "$db" ] || continue [ -f "$db" ] || continue
out="$SNAP/$(echo "$db" | sed 's#^/data/##; s#/#_#g')" out="$SNAP/$(echo "$db" | sed 's#^/data/##; s#/#_#g')"
${pkgs.sqlite}/bin/sqlite3 "$db" ".timeout 15000" ".backup '$out'" \ # Echtes SQLite -> konsistentes .backup. Andernfalls (filebrowser
|| echo "WARN: snapshot of $db failed" >&2 # nutzt z.B. BoltDB) oder bei Sperre auf eine Rohkopie zurückfallen.
if ${pkgs.sqlite}/bin/sqlite3 "$db" ".timeout 15000" ".backup '$out'" 2>/dev/null && [ -s "$out" ]; then
:
else
cp -f "$db" "$out" || echo "WARN: snapshot of $db failed" >&2
fi
done done
${pkgs.rclone}/bin/rclone sync /data gdrive:backup-daten \ ${pkgs.rclone}/bin/rclone sync /data gdrive:backup-daten \