motion_sync

...is a little bash script for rpi + a USB webcam that I wrote to upload motioneye vids and pics to you box account every minute for security reasons.

The idea behind it is that a thief / malicious person might be knowledgeable of the pi / motioneye setup and either cut the power to the premise before breaking in or go to the setup pi / webcam and disconnect it from power / disconnect the USB webcam or the LAN cable...

With my script even if a break-in happens, the thief / malicious person will be captured and if properly "UPS-ed" (pi+router) have no chance in "not" getting captures uploaded to cloud storage.

I use motioneye because is open source and free, and lightweight, so can run on a pi.

I use Box because the free account gives us 10GB

I use a Pi because it is cheap and has WiFi and LAN and USB, so a cheap WebCam will do.

It works in conjuction with motioneye and with an rclone box service I also created in /etc/systemd/user/rclone-box.service

Getting started

Install motioneye, create a box account and do not use it for anything else.

Install rclone on the pi and connect it to Box (google it)

Once Motioneye is working and saving to /var/lib/motioneye create a systemd service that keeps Box rclone alive:

mkdir -p ~/.config/systemd/user

nano ~/.config/systemd/user/rclone-box.service

[Unit]
Description=Rclone Box Mount
Documentation=man:rclone(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/rclone mount box: %h/box \
  --config %h/.config/rclone/rclone.conf \
  --vfs-cache-mode full \
  --vfs-cache-max-size 10G \
  --vfs-cache-max-age 24h \
  --dir-cache-time 72h \
  --allow-other \
  --umask 022
ExecStop=/bin/fuermount -u %h/box
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=default.target

Finally, create 2 crontab entries, one to keep the Box OAuth token alive and one to run my script every minute:

sudo crontab -e

Keep Box OAuth token alive (runs weekly, e.g., every Sunday at 3 AM)

0 3 * * 0 rclone lsd box: >/dev/null 2>&1

Sync motion recordings and cleanup (runs every minute)

          • /home/$USER/sync_motion.sh >/dev/null 2>&1

My script does the following for you:

1. Ensures log directory exists

2. Keeps log file under ~5 MB by trimming it when it gets too large

3. Remuxes MKV to MP4 (so the videos work on the pi motioneye webserver)

4. Local cleanup (Batch Trim down to 9GB)

5. Syncs to BOX with rclone (Reflects local 9GB state & deletes missing remote files)

S
Description
script that can work in conjunction with PiClock to use an USB WebCam and upload detected motion to the cloud immediately.
Readme
37 KiB
0 Stars 1 Watchers 0 Forks
Languages
Shell 100%