You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.6 KiB
59 lines
1.6 KiB
#!/bin/bash |
|
|
|
# $1: path to fs_get_stats program |
|
# $2: start dir |
|
# $3: subdir to tar up (from $2) |
|
# $4: target tar name |
|
# $5: target tarball name (usually $(3).bz2) |
|
# $6: TARGET_OUT path to query device specific FS configs |
|
|
|
if [ $# -ne 6 ]; then |
|
echo "Error: wrong number of arguments in cmd: $0 $* " |
|
exit 1 |
|
fi |
|
|
|
fs_get_stats=`readlink -f $1` |
|
start_dir=`readlink -f $2` |
|
dir_to_tar=$3 |
|
target_tar=`readlink -f $4` |
|
target_tarball=`readlink -f $5` |
|
target_out=`readlink -f $6` |
|
|
|
cd $2 |
|
|
|
#tar --no-recursion -cvf ${target_tar} ${dir_to_tar} |
|
rm ${target_tar} > /dev/null 2>&1 |
|
|
|
# do dirs first |
|
subdirs=`find ${dir_to_tar} -type d -print` |
|
files=`find ${dir_to_tar} \! -type d -print` |
|
for f in ${subdirs} ${files} ; do |
|
curr_perms=`stat -c 0%a $f` |
|
[ -d "$f" ] && is_dir=1 || is_dir=0 |
|
new_info=`${fs_get_stats} ${curr_perms} ${is_dir} ${f} ${target_out}` |
|
new_uid=`echo ${new_info} | awk '{print $1;}'` |
|
new_gid=`echo ${new_info} | awk '{print $2;}'` |
|
new_perms=`echo ${new_info} | awk '{print $3;}'` |
|
# echo "$f: dir: $is_dir curr: $curr_perms uid: $new_uid gid: $new_gid "\ |
|
# "perms: $new_perms" |
|
tar --no-recursion --numeric-owner --owner $new_uid \ |
|
--group $new_gid --mode $new_perms -p -rf ${target_tar} ${f} |
|
done |
|
|
|
if [ $? -eq 0 ] ; then |
|
case "${target_tarball}" in |
|
*.bz2 ) |
|
bzip2 -c ${target_tar} > ${target_tarball} |
|
;; |
|
*.gz ) |
|
gzip -c ${target_tar} > ${target_tarball} |
|
;; |
|
esac |
|
success=$? |
|
[ $success -eq 0 ] || rm -f ${target_tarball} |
|
rm -f ${target_tar} |
|
exit $success |
|
fi |
|
|
|
rm -f ${target_tar} |
|
exit 1
|
|
|