OS 및 기타
백업 스크립트
bright jazz music
2023. 9. 21. 09:45
#!/bin/bash
#file에 디렉터리 경로를 포함한 파일명 담기
#basename 함수를 사용하여 경로를 제외한 파일명만 추출
#추출한 파일명에 "오늘일자.bak" 붙여서 backup 디렉터리로 이동
#변수선언
target=$1
target_dir=$2
backup_dir=$3
#아규먼트 제공여부 확인. -z : 빈 문자열 여부 확인.
if [ -z "${target}" ] || [ -z "${target_dir}" ] || [ -z "${backup_dir}" ]; then
echo "#### ERROR: Please provide three appropriate arguments! (target, target_dir, backup_dir) ####"
exit 1
fi
# target_dir가 존재하는지 확인. -d : 디렉터리 여부 확인. 디렉터리인 경우 true
if [ ! -d "${target_dir}" ]; then
echo "#### WARNING: ${target_dir} does not exist! ####"
exit 1
fi
# backup_dir가 존재하지 않으면 생성
if [ ! -d "${backup_dir}" ]; then
mkdir -p ${backup_dir}
fi
for file in ${target_dir}/${target};
do
#파일이 실제로 존재하지 않거나 일반파일이 아닌 경우 건너뜀
if [ ! -f "$file" ]; then
echo "#### WARNING: $file does not exist or is not a regular file! ####"
continue
fi
base=$(basename $file)
mv ${file} ${backup_dir}/${base}.$(date +%Y%m%d%H%M%S).bak
# ex) target.20230921095711.bak
done
#사용하기 전chmod +x remove_and_backup.sh 명령어를 사용해 실행권한 부여할 것