Utoljára aktív 1740033429

anthony's Avatar anthony gist felülvizsgálása 1740033428. Revízióhoz ugrás

2 files changed, 77 insertions

inotifywait-cp.service(fájl létrehozva)

@@ -0,0 +1,18 @@
1 + # Daemon file
2 + # Place or symlink it to /etc/systemd/system/inotifywait-cp.service
3 + # Enable and start: sudo systemctl enable --now inotifywait-cp
4 + # Check it: sudo systemctl status inotifywait-cp
5 +
6 + [Unit]
7 + Description=Photosync from android
8 +
9 + [Service]
10 + Type=simple
11 + Restart=always
12 + # correct these parameters as needed:
13 + User=user
14 + WorkingDirectory=/home/user
15 + ExecStart=bash /home/user/.local/bin/inotifywait-cp.sh
16 +
17 + [Install]
18 + WantedBy=network.target

inotifywait-cp.sh(fájl létrehozva)

@@ -0,0 +1,59 @@
1 + #!/bin/bash
2 + # My use case:
3 + # syncthing synchronizes ALL changes in DCIM directory on my android to PC.
4 + # I wanted files to be copied somewhere else on my PC to stay forever, so I
5 + # could sort them later and safely free some space on mobile without loss.
6 + # Also I wish to have some stupid log with history of such events.
7 +
8 + # inotify-tools package must be installed!
9 +
10 + # CHANGE THIS PARAMETERS to ones you needed
11 + dir_src="$HOME/Syncthing/Mobile/Camera"
12 + dir_dest="$HOME/some/safe/place"
13 + dir_logs="$HOME/inotifywait-cp-logs"
14 + regexp="[0-9]{8}_[0-9]{6}.*\.(jpg|mp4|gif)"
15 +
16 + print() {
17 + echo -e "[`date '+%H:%M:%S'`] $*" \
18 + | tee -a "$dir_logs/`date '+%Y%m%d'`.log"
19 + }
20 +
21 + copy () {
22 + mkdir -p "$dir_src" "$dir_dest" "$dir_logs"
23 + if [ -f "$dir_dest/$1" ]; then
24 + print "SKIPPED:\t$dir_dest/$1"
25 + else
26 + cp "$dir_src/$1" "$dir_dest/$1"
27 + print "COPIED:\t$dir_src/$1 => $dir_dest/$1"
28 + fi
29 + }
30 +
31 + mkdir -p "$dir_src" "$dir_dest" "$dir_logs"
32 +
33 + print "START\t========================="
34 +
35 + # First, try to backup files synced since last exec of this script
36 + ls -1 "$dir_src" \
37 + | grep -E "^$regexp$" \
38 + | while read filename; do copy "$filename"; done
39 +
40 + # Next, run inotifywait against source directory with args:
41 + # --quiet -- print less (only print events)
42 + # --monitor -- don't stop after first event (like infinite loop)
43 + # --event -- first syncthing creates hidden file to write data into
44 + # then renames it according to source file name, so here
45 + # we listen to MOVED_TO event to catch final filename
46 + # --format %f -- print only filename
47 + # --include -- filename regexp to catch event from, ensure your $regexp
48 + # is correct or remove line 56 to catch synced ALL files
49 +
50 + inotifywait \
51 + --quiet \
52 + --monitor \
53 + --event moved_to \
54 + --format %f \
55 + --include "$regexp" \
56 + "$dir_src" \
57 + | while read filename; do copy "$filename"; done
58 +
59 + print "FINISH\t========================="
Újabb Régebbi