diff --git a/backup_script.sh b/backup_script.sh new file mode 100644 index 0000000..b7bdaaf --- /dev/null +++ b/backup_script.sh @@ -0,0 +1,102 @@ +#!/bin/sh + +#version 2 +#iansun2 2022/7/14 + + +#config (without "/" eg. /DISKI/Backup) +source_dir= +output_dir= +backup_count_max= + + +#init +year=$(date +"%Y") #get year +month=$(date +"%m") #get month +date=$(date +"%d") #get date + +file_name=${year}"_"${month}"_"${date}".7z" #new backup file name eg. 2022_2_2.7z +backup_count=$(find ${output_dir} -type f -iname "*.7z" -print | wc -l) #count file in $output_dir with name *.7z as $backup_count + + +#check src/out dir +if [ -d $source_dir ] +then + echo "source dir found, ok" +else + echo "source dir not found, exit" + exit 0 +fi + + +if [ -d $output_dir ] +then + echo "output dir found, enter" + cd $output_dir +else + echo "output dir not found, exit" + exit 0 +fi + + +#log dir +if [ -d "log" ] #check log dir exist? +then + echo "log dir exist" +else + mkdir "log" + echo "log dir not exist, create" +fi + +echo ${year}"_"${month}"_"${date} >> ${output_dir}"/log/backup_record" #save backup time in ${output_dir}/log/backup_record + + +#clear old backup +echo "check old backup" +echo "old backup count: "${backup_count} +while [ ${backup_count} -gt ${backup_count_max} ] #while $backup_count > $backup_count_max +do + oldest_file=$(find ${output_dir} -type f -iname "*.7z" -print | sort -n | head -n 1) #find oldest *.7z file by name + rm $oldest_file + echo "remove "${oldest_file} + backup_count=$((backup_count-1)) +done + +find ${output_dir} -empty -type d -delete #delete empty dir + + +#year dir +if [ -d $year ] +then + cd $year + echo "year dir exist, enter!" +else + mkdir $year + cd $year + echo "year dir not exist, create!" +fi + + +#month dir +if [ -d $month ] +then + cd $month + echo "month dir exist, enter!" +else + mkdir $month + cd $month + echo "month dir not exist, create!" +fi + + + +echo "create backup" +7z a ${file_name} ${source_dir}"/" -mx9 + + +#echo "[debug]" +#find ${output_dir} -type f -print | sort -n + +#echo $backup_count +#echo $source_dir +#echo $file_name