recursive fcopy for the complete files directory?

Michael Tautschnig michael.tautschnig at zt-consulting.com
Thu Jun 2 16:04:23 CEST 2005


[...]
> 
> Which is somehow ugly (I often don't like the idea anyway of having
> these files named as classes, but when i thought about having another
> intermediate directory with the class name and put the file in it, I
> didn't like that also, so it seems the way it is is the one that sucks
> less). 
> I'd like to able to just manage a whole
> directory of files belonging together to one useful configuration
> in a single directory like:
> 
> /files/etc/fai/UBUNTU-FAI-SERVER/
> 				fai.conf
> 				make-fai-nfsroot.conf
> 				menu-lst
> 				sources.list
> 
> /files/etc/fai/FAI-SERVER/	
> 			fai.conf
> 			make-fai-nfsroot.conf
> 			menu-lst
> 			sources.list
> 
> Would it be a bad idea if I'd add an option to fcopy that could handle
> this? Hmm, I guess it could work and be nice, but it might interfere
> with the "-r" when I use it as Henning does...
>
[...]

As far as I can see, at least keeping such a structure within the
"/files"-subtree wouldn't break "fcopy -r" -- it simply wouldn't do anything
with those files, as long as they aren't named like any of your classes.

Thus, you could probably do it with a quite simple bash-function for each of
your directories that demand special treatment:

copy_dir() {
  #params: directory
  local dir=$1
  local class_dir
  if [ ! -d "$FAI/files/$dir" ] ; then
    echo "Source directory not found!"
    return 1
  fi

  for c in $classes ; do
    [ -d "$FAI/files/$dir/$c" ] && class_dir="$FAI/files/$dir/$c"
  done

  if [ -z $class_dir ] ; then
    echo "No usable directory found!"
    return 2
  fi

  local current=`pwd`
  local pattern
  cd $class_dir
  if [ `ls -d .* | wc -l` -gt 2 ] ; then
    tar cfp - --exclude="CVS" --exclude=".svn" --exclude="postinst" {.[^.]*,*} | tar xf - -C ${target}/$dir
  else
    tar cfp - --exclude="CVS" --exclude=".svn" --exclude="postinst" * | tar xf - -C ${target}/$dir
  fi

  cd $current
  if [ -x $class_dir/postinst ] ; then
    $class_dir/postinst
    return $?
  else
    return 0
  fi
}

Well, there is no way to support "file-modes", at least no using the current
format of file-modes.

HTH,
Michael



More information about the linux-fai mailing list