Carbs Linux repositories automatically sync from the git repostitories and serve it through the rsync daemon. Here is a sample shell script that I use in order to sync repositories. Feel free to customize for your own use.
#!/bin/sh
HOSTNAME="rsync://carbslinux.org/repo"
GITDIR="/pub/git/repo"
SHAREDIR="/pub/share/repo"
git -C "$GITDIR" pull
rsync -avcC --delete --include=core --exclude=.rsync,.rsync_root "$GITDIR/." "$SHAREDIR"
printf '%s\n' "$HOSTNAME" > "$GITDIR/.rsync"
for dir in "$GITDIR/"*; do
[ -d "$dir" ] || continue
[ -f "$dir/.rsync" ] ||
printf '%s/%s\n' "$HOSTNAME" "${dir##*/}" > "$dir/.rsync"
printf '..\n' > "$dir/.rsync_root"
done
You can then create an rsync user for serving the repositories.
$ adduser -SD rsync
Create /etc/rsyncd.conf and a service configuration as well.
uid = rsync
gid = rsync
address = example.com
max connections = 10
use chroot = yes
[repo]
path = /pub/share/repo
comment = My repository
Create a service file at /etc/sv/rsync/run (runit):
#!/bin/sh exec rsync --daemon --no-detach