exec 4>&2
# Redirect stdout and stderr to a log file
+exec >>/var/log/vserver-reference.log
exec 2>&1
-exec &>>/var/log/vserver-reference.log
echo "--- STARTING $(date) ---" >&3 2>&4
chmod 0000 "$__DEFAULT_VSERVERDIR"
setattr --barrier "$__DEFAULT_VSERVERDIR"
+# Set the attribute to unlink so vclone does the right thing wrt to
+# conserving space by linking and not copying unified files.
+find "$__DEFAULT_VSERVERDIR/.vref/default" -type f -print0 | xargs -0 setattr --iunlink
+
# Build reference images for system slices
for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*.cloned ; do
NAME=$(basename $systemvserver .cloned)
"$_VCLONE" "$REF"/ "$TMP"/
RETVAL=$?
- # merge the stub with the reference to get the system slice
+ # merge the stub with the reference to get the system vserver
if [ $RETVAL -eq 0 ] ; then
- rsync -a "$__DEFAULT_VSERVERDIR/.vstub/$NAME"/ "$TMP"/
+ (cd "$__DEFAULT_VSERVERDIR/.vstub/$NAME"/ && find . | cpio -m -d -u -p "$TMP"/)
RETVAL=$?
fi