Skip to content

Instantly share code, notes, and snippets.

@zetavg
Last active August 29, 2015 14:04
Show Gist options
  • Save zetavg/6355647a000d2e68c45c to your computer and use it in GitHub Desktop.
Save zetavg/6355647a000d2e68c45c to your computer and use it in GitHub Desktop.
Synology NAS Auto Sync Script

Synology NAS Auto Sync Script

Use with autorun, requires screen (/opt/screen).

功能

適用於 S 牌的 NAS (需要裝 optware/screen、第三方套件 autorun),可以設定當外接 USB 裝置插入後,自動同步 NAS 內某目錄到 USB 裝置中。

  • 把 script 用 autorun 設成自動執行就不用任何操作。
  • 新檔會複寫掉舊的。
  • 在 NAS 中被刪除的檔案,同步時在 USB 裝置上也會被刪除;但在 USB 裝置上被刪除的,同步時不會刪掉 NAS 上的,且會從 NAS 拷貝回來。
  • 同步時 USBCopy 的燈會閃。
  • 同步完會嗶嗶。
  • 可以 ssh 進 screen 看進度和結果。
#!/bin/sh
TASK_ID="MySync"
SRC="/root/SyncThis/"
DST="$(dirname $0)/SyncHere/"
# Kill existing screen session
/opt/bin/screen -D -RR "$TASK_ID" -X quit || true
# Create screen and start rsync in it
/opt/bin/screen -dmS "$TASK_ID"
/opt/bin/screen -r "$TASK_ID" -p 0 -X stuff "/bin/sleep 8 ; echo A > /dev/ttyS1 ; /usr/syno/bin/rsync -ruvP --stats \"${DST}\" \"${SRC}\" && /usr/syno/bin/rsync -ruvP --delete-excluded --stats \"${SRC}\" \"${DST}\" && /usr/syno/bin/synodsmnotify @administrators \"$TASK_ID Auto Sync Complete\" \"source: \\\"$SRC\\\" destination: \\\"$DST\\\".\" && /bin/echo 2 >/dev/ttyS1 && /bin/usleep 500000 && /bin/echo 3 >/dev/ttyS1 ; echo B > /dev/ttyS1
"
# Notify in DSM at start
/usr/syno/bin/synodsmnotify @administrators "Starting $TASK_ID Auto Sync" "source: \"$SRC\" destination: \"$DST\". Use the command \`# screen -R $TASK_ID\` via ssh to see the progress."
sleep 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment