Syncvar

From The Network People, Inc. - Wiki
Jump to navigation Jump to search

syncvar

#!/bin/sh
#
# Copyright (c) 2007  Matt Simerson
# All rights reserved.
# 
# NOTE: this script runs early in the startup process, before 
# /usr is available. It requires that a statically compiled 
# version of rsync is installed in /bin/rsync. 
#

# PROVIDE: syncvar
# REQUIRE: mountcritlocal var
# KEYWORD: shutdown    # added per tom mazzotta

. /etc/rc.subr

name="syncvar"
rcvar=`set_rcvar`
command="/bin/rsync"
excludes="--exclude spool/ --exclude tmp/ --exclude empty/"
syncvar_enable=${syncvar_enable-"NO"}
syncvar_dir=${syncvar_dir-"/var.disk"}

start_cmd="syncvar_start"
stop_cmd="syncvar_stop"

load_rc_config $name

required_dirs="${syncvar_dir}"

syncvar_start () {
        echo "Syncing var from disk."
#       $command -a  $excludes $syncvar_dir/ /var/   # nice and quiet
        $command -av $excludes $syncvar_dir/ /var/   # noisy!
}

syncvar_stop () {
        echo "Syncing var to disk."

        more_excludes="--exclude run/ --exclude entropy/ --exclude supervise/"

        # remount our $syncvar_dir as r/w
        (  /sbin/mount -u -o rw $syncvar_dir  ||  # HD boot
           /sbin/mount -u -o rw /  ||             # CF boot
           ( echo "Failed to sync var to disk!" && exit 1 )
        )

        # just show us what it would do
#       $command -avn $excludes $more_excludes /var/ $syncvar_dir/

        # do the deed
        $command -av $excludes $more_excludes /var/ $syncvar_dir/

        # do it quietly
#       $command -a $excludes $more_excludes /var/ $syncvar_dir/
}

run_rc_command "$1"