-echo ""
-echo "Backup passwd and group files:"
-if cmp $bak/master.passwd.bak /etc/master.passwd >/dev/null; then :; else
- echo "$host passwd diffs:"
- diff $bak/master.passwd.bak /etc/master.passwd
- mv $bak/master.passwd.bak $bak/master.passwd.bak2
- cp -p /etc/master.passwd $bak/master.passwd.bak
- chmod 600 $bak/master.passwd.bak $bak/master.passwd.bak2
-fi
-if cmp $bak/group.bak /etc/group >/dev/null; then :; else
- mv $bak/group.bak $bak/group.bak2
- cp -p /etc/group $bak/group.bak
-fi
-if [ -f /etc/Distfile ]; then
- if cmp $bak/Distfile.bak /etc/Distfile >/dev/null; then :; else
- mv $bak/Distfile.bak $bak/Distfile.bak2
- cp /etc/Distfile $bak/Distfile.bak
- fi
-fi
+# If ROOTBACKUP is set to 1 in the environment, and
+# if filesystem named /altroot is type ufs, on /dev/* and mounted "xx",
+# use it as a backup root filesystem to be updated daily.
+[ "X$ROOTBACKUP" = X1 ] && {
+ rootdev=`awk '$2 == "/" && $1 ~ /^\/dev\// && $3 == "ufs" && \
+ $4 == "rw" \
+ { print substr($1, 6) }' < /etc/fstab`
+ rootbak=`awk '$2 == "/altroot" && $1 ~ /^\/dev\// && $3 == "ufs" && \
+ $4 == "xx" \
+ { print substr($1, 6) }' < /etc/fstab`
+ [ X$rootdev != X -a X$rootbak != X ] && {
+ sync
+ echo ""
+ echo "Backing up root filesystem:"
+ echo "copying /dev/r$rootdev to /dev/r$rootbak"
+ dd if=/dev/r$rootdev of=/dev/r$rootbak bs=16b seek=1 skip=1 \
+ conv=noerror,sync
+ fsck -y /dev/r$rootbak
+ }
+}