Skip to content

Instantly share code, notes, and snippets.

@furu-nob
Last active August 29, 2015 14:01
Show Gist options
  • Save furu-nob/70c1e7655ce239cb1def to your computer and use it in GitHub Desktop.
Save furu-nob/70c1e7655ce239cb1def to your computer and use it in GitHub Desktop.
#!/bin/sh
# For stat version: 2.2
# If you use New Version maybe can use printf Option.
function usage {
cat <<-EOF
$(basename ${0}) is a tool for file copy same parmission, owner and group as DEST.
Usage: $(basename ${0}) from_file to_file
EOF
}
#check PARMISSION
function CHECK_PARMISSION {
FILE=$1
STRINGS=$(stat $FILE|grep ^Access:|head -1)
# Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ nobody)
FRONT=${STRINGS%%\/*}
echo ${FRONT#*\(}
# OUTPUT -> 0755
}
#check OWNER
function CHECK_OWNER {
FILE=$1
STRINGS=$(stat $FILE|grep ^Access:|head -1)
# Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ nobody)
FRONT1=${STRINGS#*\/}
FRONT2=${FRONT1#*\/}
echo ${FRONT2%%\)*}
# OUTPUT -> root
}
#check GROUPS
function CHECK_GROUPS {
FILE=$1
STRINGS=$(stat $FILE|grep ^Access:|head -1)
# Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 99/ nobody)
FRONT1=${STRINGS#*\/}
FRONT2=${FRONT1#*\/}
FRONT3=${FRONT2#*\/}
echo ${FRONT3%%\)*}
# OUTPUT -> nobody
}
FILEFROM=$1
FILETO=$2
if [ $# -ne 2 ]
then
usage
exit 0
else
if [ -f $FILETO ]
then
FILEPARMISSION=$(CHECK_PARMISSION $FILETO)
FILEOWNER=$(CHECK_OWNER $FILETO)
FILEGROUP=$(CHECK_GROUPS $FILETO)
cp -a $FILEFROM $FILETO &&\
chmod $FILEPARMISSION $FILETO &&\
chown $FILEOWNER:$FILEGROUP $FILETO
echo "From file: $FILEFROM"
echo "To file: $FILETO"
echo "Filemode: $FILEPARMISSION"
echo "Owner: $FILEOWNER"
echo "Group: $FILEGROUP"
else
echo "There is no file \"$FILETO\" Abort!!"
exit 1
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment