daemon: flock, dry-run resync gate, shared session, looping interval
This commit is contained in:
+13
-11
@@ -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)"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user