Package: rsync Version: 3.0.7-1 Severity: wishlist Tags: patch Hi,
Managing a monolithic /etc/rsyncd.conf file can be pain, especially if you are deploying parts of that file using packages. There are various update-* scripts that take a bunch of snippets and munge them together to generate a config file that the appriopriate tool can use. I've grabbed one of those (which one I can't tell you as I typed in the wrong filename into the script when I first wrote it years ago) and modified it to generate /etc/rsyncd.conf. I've attached this script, and find it really useful. Cheers! -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.30-2-amd64 (SMP w/2 CPU cores) Locale: LANG=en_NZ.UTF-8, LC_CTYPE=POSIX (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/bash Versions of packages rsync depends on: ii base-files 5.1 Debian base system miscellaneous f ii libacl1 2.2.49-2 Access control list shared library ii libc6 2.10.2-6 Embedded GNU C Library: Shared lib ii libpopt0 1.15-1 lib for parsing cmdline parameters ii lsb-base 3.2-23 Linux Standard Base 3.2 init scrip rsync recommends no packages. Versions of packages rsync suggests: ii openssh-client 1:5.3p1-1 secure shell (SSH) client, for sec ii openssh-server 1:5.3p1-1 secure shell (SSH) server, for sec -- no debconf information
#!/bin/sh # Build an /etc/rsyncd.conf file from snippets in /etc/rsyncd.conf.d. # Modelled on various other similar scripts from Debian. RSYNCCONFFILE=/etc/rsyncd.conf RSYNCCONFTMPFILE="${RSYNCCONFFILE}.$$" HEADER="### This file is automatically generated by update-rsyncd.conf" set -e if [ "$1" = "force" ] ; then force=1 else force= fi checkoverwrite() { cfgfile="$1" if [ -f "$cfgfile" ]; then if ! sed -ne 1p "$cfgfile" | grep -q "^$HEADER" ; then echo "Error: the current $cfgfile is not automatically generated." >&2 if [ -z "$force" ]; then echo "Use \"update-rsyncd.conf force\" to force (re)generation." exit 3 else echo "force specified, (re)generating file anyway." fi fi fi } createfile() { cat <<EOF > "$1" $HEADER # # Please do not edit this file directly. If you want to change or add # anything please take a look at the files in /etc/rsyncd.conf.d and run # update-rsyncd.conf # EOF } addfile() { src="$1" tgt="$2" echo "### update-rsyncd.conf: start processing $src" >> "$tgt" if [ -e "$src" ] ; then cat "$src" >> "$tgt" else echo "Warnings: $src does not exist (dangling symlink?)" fi cat <<EOF >> "$tgt" ### update-rsyncd.conf: end processing $cfg EOF } checkoverwrite "$RSYNCCONFFILE" if [ 0 -ne "`id -u`" ]; then echo "You have to be root to do this." >&2 exit 2 fi [ -e "$RSYNCCONFFILE" ] && cp -f "$RSYNCCONFFILE" "${RSYNCCONFFILE}.old" createfile "$RSYNCCONFTMPFILE" for cfg in /etc/rsyncd.conf.d/* ; do if [ -f "$cfg" ]; then if ! echo $cfg | grep -q '\(\.dpkg-[a-z]*\|\.orig|,v|~\)$' ; then addfile "$cfg" "$RSYNCCONFTMPFILE" fi fi done mv "$RSYNCCONFTMPFILE" "$RSYNCCONFFILE"