daemon: flock, dry-run resync gate, shared session, looping interval

This commit is contained in:
2026-09-10 01:04:20 +02:00
parent a15af4964b
commit dc8f1e885a
10 changed files with 194 additions and 82 deletions
+13 -11
View File
@@ -58,36 +58,37 @@ echo "building rclone..."
echo "building rclone-bisyncd..."
(cd "$SRC/packaging/cmd/rclone-bisyncd" && go build -trimpath -o "$BIN/rclone-bisyncd" .)
ENABLED=false
if "$BIN/rclone" lsf dropbox: --include RCLONE_TEST 2>/dev/null | grep -q RCLONE_TEST; then
ENABLED=true
fi
cat >"$CFG_DIR/config.json" <<EOF
{
"enabled": true,
"enabled": $ENABLED,
"path1": "$DROPBOX",
"path2": "dropbox:",
"workdir": "$WORKDIR",
"interval_minutes": 15,
"rclone": "$BIN/rclone",
"check_filename": "RCLONE_TEST"
"check_filename": "RCLONE_TEST",
"session_name": "datastorage-dropbox"
}
EOF
install -m 644 "$SRC/packaging/linux/systemd/rclone-bisync.service" "$UNIT_DIR/rclone-bisync.service"
install -m 644 "$SRC/packaging/linux/systemd/rclone-bisync.timer" "$UNIT_DIR/rclone-bisync.timer"
# Point units at user binaries
sed -i "s|^ExecStart=.*|ExecStart=$BIN/rclone-bisyncd --once|" "$UNIT_DIR/rclone-bisync.service"
sed -i "s|^ExecStart=.*|ExecStart=$BIN/rclone-bisyncd|" "$UNIT_DIR/rclone-bisync.service"
# Startup: enable timer + one-shot after login
cat >"$HOME/.config/autostart/rclone-bisync.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=rclone Dropbox bisync
Exec=sh -c 'systemctl --user start rclone-bisync.service; systemctl --user enable --now rclone-bisync.timer'
Exec=systemctl --user start rclone-bisync.service
X-GNOME-Autostart-enabled=true
Terminal=false
EOF
systemctl --user daemon-reload
systemctl --user enable --now rclone-bisync.timer
systemctl --user start rclone-bisync.service || true
systemctl --user enable --now rclone-bisync.service || true
case ":$PATH:" in
*:$BIN:*) ;;
@@ -95,5 +96,6 @@ case ":$PATH:" in
esac
echo "Configured path1=$DROPBOX workdir=$WORKDIR (~/DataStorage)"
echo "Startup: autostart desktop + systemd --user timer every 15 min"
echo "Put RCLONE_TEST on dropbox: as well. Remote dropbox: must exist in rclone.conf."
echo "Startup: looping systemd --user service (sleeps 15 min after each run)"
echo "If listings are empty: dry-run --resync only. Then: rclone-bisyncd --accept-resync"
echo "enabled=$ENABLED (true only if dropbox: already has RCLONE_TEST)"
+2 -2
View File
@@ -1,7 +1,7 @@
#!/bin/sh
set -eu
systemctl --user daemon-reload 2>/dev/null || true
systemctl --user enable --now rclone-bisync.timer 2>/dev/null || true
systemctl --user enable --now rclone-bisync.service 2>/dev/null || true
if command -v notify-send >/dev/null 2>&1; then
notify-send -a rclone-bisync "rclone-bisync" "Background timer enabled. Edit ~/.config/rclone-dropbox-bisync/config.json (set enabled=true)."
notify-send -a rclone-bisync "rclone-bisync" "Looping bisync started. First run is dry-run --resync until rclone-bisyncd --accept-resync."
fi
+5 -3
View File
@@ -1,11 +1,13 @@
[Unit]
Description=rclone Dropbox bisync (fail-closed)
Description=rclone Dropbox bisync (fail-closed loop)
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/opt/rclone-dropbox-bisync/bin/rclone-bisyncd --once
Type=simple
ExecStart=/opt/rclone-dropbox-bisync/bin/rclone-bisyncd
Restart=on-failure
RestartSec=60
Nice=10
[Install]
+2 -3
View File
@@ -1,9 +1,8 @@
[Unit]
Description=rclone Dropbox bisync timer
Description=unused — looping rclone-bisync.service replaced the timer
[Timer]
OnBootSec=3min
OnUnitActiveSec=15min
OnUnitInactiveSec=15min
Persistent=true
Unit=rclone-bisync.service