Home | History | Annotate | Download | only in tools
      1 #!/bin/bash
      2 
      3 # $1: path to fs_get_stats program
      4 # $2: start dir
      5 # $3: subdir to tar up (from $2)
      6 # $4: target tar name
      7 # $5: target tarball name (usually $(3).bz2)
      8 
      9 if [ $# -ne 5 ]; then
     10     echo "Error: wrong number of arguments in cmd: $0 $* "
     11     exit 1
     12 fi
     13 
     14 fs_get_stats=`readlink -f $1`
     15 start_dir=`readlink -f $2`
     16 dir_to_tar=$3
     17 target_tar=`readlink -f $4`
     18 target_tarball=`readlink -f $5`
     19 
     20 cd $2
     21 
     22 #tar --no-recursion -cvf ${target_tar} ${dir_to_tar}
     23 rm ${target_tar} > /dev/null 2>&1
     24 
     25 # do dirs first
     26 subdirs=`find ${dir_to_tar} -type d -print`
     27 files=`find ${dir_to_tar} \! -type d -print`
     28 for f in ${subdirs} ${files} ; do
     29     curr_perms=`stat -c 0%a $f`
     30     [ -d "$f" ] && is_dir=1 || is_dir=0
     31     new_info=`${fs_get_stats} ${curr_perms} ${is_dir} ${f}`
     32     new_uid=`echo ${new_info} | awk '{print $1;}'`
     33     new_gid=`echo ${new_info} | awk '{print $2;}'`
     34     new_perms=`echo ${new_info} | awk '{print $3;}'`
     35 #    echo "$f: dir: $is_dir curr: $curr_perms uid: $new_uid gid: $new_gid "\
     36 #         "perms: $new_perms"
     37     tar --no-recursion --numeric-owner --owner $new_uid \
     38         --group $new_gid --mode $new_perms -p -rf ${target_tar} ${f}
     39 done
     40 
     41 if [ $? -eq 0 ] ; then
     42     bzip2 -c ${target_tar} > ${target_tarball}
     43     success=$?
     44     [ $success -eq 0 ] || rm -f ${target_tarball}
     45     rm -f ${target_tar}
     46     exit $success
     47 fi
     48 
     49 rm -f ${target_tar}
     50 exit 1
     51