webdav-curl-sync.sh (1640B)
1#!/bin/sh 2 3## $ crontab -l 4## @reboot sleep 60 && ~/.local/bin/webdav-curl-sync.sh -d 5## 0 */3 * * * ~/.local/bin/webdav-curl-sync.sh -d 6 7LAST_UPLOADED="" 8: "${progname:="${0##*/}"}" 9 10preview() { 11 curl -s https://user:password@domain.tld:port/orgmode.org 12} 13 14download() { 15 for orgmode in file1 file2; do 16 #HTTPS_PROXY="socks5h://127.0.0.1:1080" 17 filename="${orgmode}.org" 18 file="$HOME/orgmode/$filename" 19 uri="https://user:password@domain.tld:port/${orgmode}.org" 20 if test -e "$file"; then 21 zflag="-z $file" 22 else 23 zflag= 24 fi 25 HTTP_CODE=$(curl -sR --write-out %{http_code} -o "$file" $zflag "$uri") 26 LAST_MODIFIED=$(date -r $file -u '+%F %T') 27 echo -n 'Download: ' 28 case "$HTTP_CODE" in 29 304) echo "$LAST_MODIFIED $filename (bypassed)";; 30 200) echo "$LAST_MODIFIED $filename (update)";; 31 000) echo "$filename (failed)";; 32 *) echo "$filename ($HTTP_CODE)";; 33 esac 34 done 35} 36 37upload() { 38 dir="$HOME/orgmode" 39 uri="https://user:password@domain.tld:port/orgmode" 40 for orgmode in $dir/*.org; do 41 filename=$(basename $orgmode) 42 filemod=$(stat -c %Y $orgmode) 43 if [ "$filemod" -gt "$LAST_UPLOADED" ]; then 44 HTTP_CODE=$(curl -s -o /dev/null --write-out %{http_code} -T "$orgmode" "$uri/$filename") 45 if [ "$HTTP_CODE" = "201" ]; then 46 echo "UPLOAD: $filename" 47 sed -i "s/^LAST_UPLOADED=.*$/LAST_UPLOADED=\"$(date +%s)\"/" $(realpath $0) 48 else 49 echo "UPLOAD: $filename (failed)" 50 fi 51 else 52 echo "UPLOAD: $filename (bypassed)" 53 fi 54 done 55} 56 57usage() { 58 echo "Usage: $progname -p|-u|-d|-a" 59} 60 61case "$1" in 62 -p) preview ;; 63 -u) upload ;; 64 -d) download ;; 65 -a) download; upload ;; 66 *) usage ;; 67esac 68exit 0