33 lines
734 B
Bash
Executable file
33 lines
734 B
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
if [ $# -ne 1 ]
|
|
then echo "Usage: $0 mtreefile"
|
|
exit 1
|
|
fi
|
|
|
|
cat "$1" | while read line
|
|
do
|
|
NF="`echo $line | awk '{ print NF }'`"
|
|
if [ $NF = 4 ]
|
|
then mode="`echo $line | awk '{ print $1 }'`"
|
|
owner="`echo $line | awk '{ print $2 }'`"
|
|
group="`echo $line | awk '{ print $3 }'`"
|
|
dir="`echo $line | awk '{ print $4 }'`"
|
|
mkdir -p $dir
|
|
targetdev="`stat -f %d $dir/.`"
|
|
if [ $targetdev -lt 256 ]
|
|
then echo "skipping non-dev $dir properties"
|
|
else chown $owner $dir
|
|
chmod $mode $dir
|
|
chgrp $group $dir
|
|
fi
|
|
elif [ $NF = 3 ]
|
|
then target="`echo $line | awk '{ print $3 }'`"
|
|
linkfile="`echo $line | awk '{ print $1 }'`"
|
|
rm -f $linkfile
|
|
ln -s $target $linkfile
|
|
else echo odd line.
|
|
exit 1
|
|
fi
|
|
done
|