overlay_syncd 1.3 KB
#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=overlay_syncd
DESC="overlay sync"

# Possible problem with overlayfs:
#     when using overlays deleting existing in the lower layer dirs can cause error (hopefully it gets fixed someday):
#       example: 
#           * /mnt/sda1 exists in lower layer: /tmp/rootfs.ro/tmp
#           * upper layer is mounted to /
#       # rmdir /mnt/sda1
#       # mkdir /mnt/sda1
#       mkdir: cannot create directory '/mnt/sda1': Operation not supported

sync_files () {
  rsync -av --exclude=mnt --exclude=tmp --exclude=dev --exclude=var --exclude=run /tmp/rootfs.rw/upperdir/ /tmp/rootfs.ro/
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
	echo "$NAME:"
	;;
  stop)
	echo -n "Stopping $DESC: "
	echo "$NAME."
	if [ -f /tmp/overlay_sync ]; then 
            if [ -d /tmp/rootfs.ro ]; then
              sync_files
            fi
	fi
	;;
  restart)
	echo -n "Restarting $DESC: "
	echo "$NAME."
	;;
  status)
	echo -n "$NAME status:"
	if [ -f /var/run/$NAME ]; then
	  echo -n "Running"
	else
	  echo -n "Not running"
	fi
	;;
  sync)
        if [ -f /tmp/overlay_sync ]; then 
            if [ -d /tmp/rootfs.ro ]; then
              sync_files
            fi
        fi
  ;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|status|sync}" >&2
	exit 1
	;;
esac

exit 0