local/bin/rshare: Init.
parent
137b68fb94
commit
82872f7b0a
|
@ -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"
|
Loading…
Reference in New Issue