On Tue, Mar 02, 1999 at 12:45:23AM +0000, Edward Betts wrote: > Filesystem Hierarchy Standard (FHS) > Changes needed, off the top of my head - > * move /usr/doc/* to /usr/share/doc/* > * move /usr/info/* to /usr/share/info/* > * move /usr/man/* to /usr/share/man/* > * move /var/lib/dpkg to /var/state/dpkg To make the move, I have write a bash-script: fs-translation I have not test it. It test the arguments from fs-translation and make, after the move, a symlink at the old place to the new. Have a look on it. You can start it. It make nothing. Only verbose output... The bash-script: ----------------------------------------------------------------------- #!/bin/bash VERBOSE=1; DONT=1; FREESIZE=102400 vecho () { if [ $VERBOSE -gt 0 ]; then echo $* fi } dirstatus () { echo "Status" if [ ! `echo $1|sed -e "s/\(.\).*/\1/"` = "/" ]; then echo "$1 is not absolut!!" exit -1 else vecho "$1 is absolut. OK" fi if [ ! `echo $2|sed -e "s/\(.\).*/\1/"` = "/" ]; then echo "$2 is not absolut!!" exit -1 else vecho "$2 is absolut. OK" fi if [ ! -d $1 ]; then echo "$1 is not a directory!!" exit -1 else vecho "$1 is a directory. OK" fi DEST=`dirname $2` if [ ! -d $DEST ]; then echo "$DEST is not a directory!!" exit -1 else vecho "$DEST is a directory. OK" fi if [ -d $2 ]; then echo "$2 is a directory!!" echo "please check it, I can't move $1 to $2" exit -1 else vecho "$2 is not a directory. OK" fi if [ -e $2 ]; then echo "$2 exists!!" echo "please check it, I can't move $1 to $2" exit -1 else vecho "$2 is not in the filesystem. OK" fi touch $DEST/$$.test || exit -1 if [ `find $1 -name "$$.test"` ]; then rm $DEST/$$.test echo "$DEST is in $1 !!" exit -1 else vecho "$DEST is not in $1. OK" fi SIZE1=`du -sk $1|cut -f1` SIZE2=`df $DEST|tail -1|sed -e "s/[^ ]* *[^ ]* *[^ ]* *\([^ ]*\).*/\1/"` LOCA1=`df $1|tail -1|cut -f1 -d " "` LOCA2=`df $DEST|tail -1|cut -f1 -d " "` printf "%30s is on %10s and use %10s kByte \n" $1 $LOCA1 $SIZE1 printf "%30s is on %10s and have %10s kByte free \n" $2 $LOCA2 $SIZE2 if [ $LOCA1 = $LOCA2 ];then echo $1 and $2 an the same device if [ $DONT -gt 0 ]; then vecho = mv $1 $2 vecho = cd `dirname $1` vecho = ln -s $2 `basename $1` else mv $1 $2 (cd `dirname $1` ln -s $2 `basename $1`) fi else echo $1 and $2 not an the same device echo after the move you have $[$SIZE2-$SIZE1] kByte free on $LOCA2 if [ $[$SIZE2-$SIZE1-$FREESIZE] -gt 0 ];then if [ $DONT -gt 0 ]; then vecho = mv $1 `dirname $1`/tmp.$$ vecho = mkdir $2 vecho = cp -a `dirname $1`/tmp.$$/* $2 vecho = cd `dirname $1` vecho = ln -s $2 `basename $1` vecho = rm -rf `dirname $1`/tmp.$$ else mv $1 `dirname $1`/tmp.$$ mkdir $2 cp -a `dirname $1`/tmp.$$/* $2 (cd `dirname $1` ln -s $2 `basename $1`) rm -rf $1.$$ fi else echo "not enough free space!!" exit -1 fi fi } dirstatus $1 $2 ----------------------------------------------------------------------- if the programm should move the dir, change DONT=1 in DONT=0. the output from the Programm: root@titanic:~> ./fs-translation /usr/doc/ /usr/share/doc Status /usr/doc/ is absolut. OK /usr/share/doc is absolut. OK /usr/doc/ is a directory. OK /usr/share is a directory. OK /usr/share/doc is not a directory. OK /usr/share/doc is not in the filesystem. OK /usr/share is not in /usr/doc/. OK /usr/doc/ is on /dev/hdc3 and use 129095 kByte /usr/share/doc is on /dev/hdc3 and have 84248 kByte free /usr/doc/ and /usr/share/doc an the same device = mv /usr/doc/ /usr/share/doc = cd /usr = ln -s /usr/share/doc doc Grisu -- Michael Bramer -- a Debian Linux Developer http://www.debian.org PGP: finger grisu@master.debian.org -- Linux Sysadmin -- Use Debian Linux "Now let me explain why this makes intuitive sense." --- Prof. Larry Wasserman
Attachment:
pgp3Dyk62Hqkr.pgp
Description: PGP signature