Skip to content

Instantly share code, notes, and snippets.

@h-otter
Created May 7, 2016 05:36
Show Gist options
  • Save h-otter/4a0bdcfe293cb82b053ca2b2f4132ece to your computer and use it in GitHub Desktop.
Save h-otter/4a0bdcfe293cb82b053ca2b2f4132ece to your computer and use it in GitHub Desktop.
#!/bin/bash
usage_exit(){
echo "[*] Usage: $0 [-w] [-n suffix_num] [-f] [-o output_dir] filename"
echo
echo "backup a file as {filename}.{date}[.{suffix_num}]"
echo " -w: bachup without suffix_num"
echo " -n: set suffix_num"
echo " -f: cp without -i option"
echo " -o: output to directory"
echo
echo "developed by h-otter"
exit 1
}
while getopts :n:wfo: OPT
do
case $OPT in
w) WITHOUT_FLAG=1
;;
n) FILE_NUM=$OPTARG
;;
f) FORCE_FLAG=1
;;
o) OUTPUT_PATH=$OPTARG
;;
\?) usage_exit
;;
esac
done
shift $((OPTIND - 1))
if [ $# != 1 ]
then
usage_exit
fi
# vars
SUFFIX_DATE=`date +%Y%m%d`
FULL_PATH=`readlink -f $1`
FILE_NAME=`basename $1`
DIR_PATH=${FULL_PATH%/*}
# make new path
if [ ! -z "${OUTPUT_PATH+x}" ]
then
new_path=$OUTPUT_PATH/$FILE_NAME
else
new_path=$DIR_PATH/$FILE_NAME
fi
# make new filename
if [ ! -e $new_path.$SUFFIX_DATE ] || [ $WITHOUT_FLAG ]
then
new_file=$new_path.$SUFFIX_DATE
elif [ ! -z "${FILE_NUM+x}" ]
then
new_file=$new_path.$SUFFIX_DATE.$FILE_NUM
else
FILE_NUM=1
while [ -e $new_path.$SUFFIX_DATE.$FILE_NUM ]
do
FILE_NUM=$(( FILE_NUM + 1 ))
done
new_file=$new_path.$SUFFIX_DATE.$FILE_NUM
fi
if [ $FORCE_FLAG ]
then
cp -p $FULL_PATH $new_file
else
cp -pi $FULL_PATH $new_file
fi
if [ $? == 0 ]
then
echo "[+] Finished backup to $new_file"
else
echo "[-] Error backup to $new_file"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment