this has been done before. i can't remember who wrote it and i couldnt find it in the contrib index.
#!/bin/rc fn get_dirs { tmp = /tmp/$pid ^_dirs echo -n > $tmp for (f in `{du -nf $root_in | awk '{print $2}' }) ls -l $f | grep '^d' | awk '{print $10}' >> $tmp dirs = `{sort $tmp} rm $tmp } root_in=$1 root_out=$2 if(~ $3 '') get_dirs; if not dirs = `{cat $3}; for(i in $dirs){ o=`{echo $i | awk '{gsub(ENVIRON["root_in"], ENVIRON["root_out"], $0); print}'} echo bind -bc $i $o } theres also divergefs. -- cinap