#!/bin/bash #define confirm function # modified so it only asks for confirmation if needed confirm() { local foo if [ "${CONFIRM:-0}" = "1" ]; then echo Confirm: $* >&2 read foo <&2 else foo="Yes" fi case "$foo" in n*|N*) echo command skipped ;; *) #execute the command $* ;; esac } echo move /usr to /disk0/usr echo note that this is kind of dangerous and echo is best done in single user mode confirm mv -f /etc/fstab /etc/fstab.bak confirm sed -e "s@/usr@/disk0@" /etc/fstab confirm mkdir /disk0 confirm mkdir /usr/usr confirm chmod 755 /usr/usr confirm chmod 755 /disk0 confirm cd /usr echo the next command will generate one error message echo about moving usr to usr/usr confirm mv * usr confirm cd / confirm umount /usr confirm mount /disk0 confirm rmdir /usr confirm ln -s /disk0/usr /usr echo quick fix for X11 symbolic link bugs confirm ln -s /etc /disk0/etc echo quick fix for redhat symbolic link bugs confirm ln -s /bin /disk0/bin echo This should be done in single user mode echo move /var to /disk0/var confirm mkdir /disk0/var confirm eval 'cd /; tar cvf - var | (cd /disk0; tar xvfp -)' confirm rm -Rf /var confirm ln -s /disk0/var /var # replace /tmp with symlink to /disk0/var/tmp confirm rm -Rf /tmp confirm ln -s /disk0/var/tmp /tmp # move /home to /disk0/home, with symbolic links for each "user" # rather than one for the whole /home structure confirm eval 'cd /; tar cvf - home | (cd /disk0; tar xvfp -)' confirm cd /disk0/home for i in *; do echo $i confirm rm -Rf /home/$i confirm ln -s /disk0/home/$i /home/$i done confirm sync # confirm reboot echo "please reboot system now"