local/bin/rshare: Init.

master
Pierre Neidhardt 2020-06-11 18:36:03 +02:00
parent 137b68fb94
commit 82872f7b0a
1 changed files with 64 additions and 0 deletions

64
.local/bin/rshare Executable file
View File

@ -0,0 +1,64 @@
#!/bin/sh
PORT=8888
CONFIG=$HOME/.config/rsync/rsync.conf
CACHE_DIR=$HOME/.cache/rsyncd
IP=$(ip addr | awk '/state UP/ {getline; getline; $0=$2; gsub(/\/.*/, "");print; exit}')
usage () {
cat <<EOF>&2
Usage: ${0##*/} PATH
Startup an rsync daemon and share PATH as read-only under the 'files' module.
Clients can sync with, for instance:
rsync -iavzzP rsync://$IP:$PORT/files
Options:
-p PORT: Specify a port number (default: $PORT).
Must be above 1024 to run without privileges.
EOF
}
while getopts ":hp:" opt; do
case $opt in
h)
usage
exit ;;
p)
PORT="$OPTARG" ;;
\?)
usage
exit 1 ;;
esac
done
shift $(($OPTIND - 1))
[ $# -ne 1 ] && usage && exit 1
[ "$1" = "-h" ] && usage && exit
[ "$1" = "--" ] && shift
mkdir -p "$(dirname "$CONFIG")" "$CACHE_DIR"
TARGET=$(realpath "$1")
cat<<EOF>"$CONFIG"
pid file = $CACHE_DIR/rsyncd.pid
lock file = $CACHE_DIR/rsyncd.lock
log file = $CACHE_DIR/rsyncd.log
port = $PORT
use chroot = false
[files]
path = $TARGET
comment = Rsync share
read only = true
timeout = 300
EOF
rsync --daemon --config="$CONFIG" && \
echo "rsync daemon listening on $IP:$PORT"