[리눅스/윈도] 스프링 기반 프로젝트 - 부분 백업 스크립트
2023. 4. 5. 02:20ㆍ리눅스 실제 사용 팁/bash
큰 사이트의 프로젝트에 참여할 때 본인이 작업한 소스만 백업하고 싶을 때 쓰면 유용하다.
본 스크립트는 넥사크로 프로젝트를 기준으로 작성하였다.
윈도10에는 WSL 이 있는데 보안규정에 위배될까봐 삭제했다가 BASH 와 GNU 유틸리티가 너무 그리운 나머지 거들떠 보지도 않던 Cygwin 을 설치하게 되었다.
#!/usr/bin/bash
# Copyright [2021-2022] [한정훈 & papercraft.tistory.com & 종이와 쉼터]
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ------------------------------------------------------------
# 본 BASH 스크립트는 아파치 라이선스 버전 2.0(라이선스)에 따라 라이선스가 부여됩니다.
# 라이선스를 준수하지 않는 한 이 파일을 사용할 수 없습니다.
# 다음에서 라이선스 사본을 얻을 수 있습니다.
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# 관련 법률에서 요구하거나 서면으로 동의하지 않는 한 소프트웨어
# 라이선스에 따라 배포되는 것은 "있는 그대로" 배포되며,
# 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건도 제공하지 않습니다.
# 라이선스에 따른 권한 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하십시오.
#
# 퍼갈 때는 출처를 남겨주세요.
function usage {
echo -e '\n'
echo 사용방법은 다음과 같습니다.
echo \#--------------------------------------\#
echo `basename $0` [work-name] [screen-name]
echo -e ' [work-name] \t\tmember'
echo -e ' [screen-name] \t\tInfo01'
}
echo \#--------------------------------------\#
echo 웹개발소스 백업 스크립트입니다.
[[ $# -lt 2 ]] && usage && exit 0
echo \#--------------------------------------\#
ROOT_LOC=${HOME}/workspace/MyPrj/src/main
JAVA=${ROOT_LOC}/java
MAPPER=${ROOT_LOC}/resources/mybatis/mappers
l_work=${$1^h} # 알파벳 소문자로 변환함
work=${l_work^} # 첫 글자만 대문자로 변환함
l_screen=${$2^h} # 알파벳 소문자로 변환함
screen=${l_screen^} # 첫 글자만 대문자로 변환함
workScreen=${work}${screen}
xfdl=${ROOT_LOC}/wasapp/${l_work}
svc=${JAVA}/${l_work}/service
impl=${JAVA}/${l_work}/service/impl
dao=${JAVA}/${l_work}/service/dao
vo=${JAVA}/${l_work}/vo
web=${JAVA}/${l_work}/web
mapper=${MAPPER}/${l_work}
backup_target=''
if [ -d ${xfdl} ];then
backup_target+=${xfdl}/${workScreen}'*.xfdl '
backup_target+=${xfdl}/${workScreen}'*.xfdl.js '
fi
if [ -d ${svc} ];then
backup_target+=${svc}/${workScreen}'*.java '
fi
if [ -d ${impl} ];then
backup_target+=${impl}/${workScreen}'*.java'
fi
if [ -d ${dao} ];then
backup_target+=${dao}/${workScreen}'*.java'
fi
if [ -d ${vo} ];then
backup_target+=${vo}/${workScreen}'*.java'
fi
if [ -d ${web} ];then
backup_target+=${web}/${workScreen}'*.java'
fi
if [ -d ${mapper} ];then
backup_target+=${mapper}/${l_work}_${workScreen}'*_sql.xml'
fi
OUTPUT_DT=$(date +'%Y-%m%d_%H%M%S')
OUTPUT_DIR=${HOME}/ProjectBackup
TEMP_DIR=${HOME}/temp
TEMP_OUT_DIR=${TEMP_DIR}/${OUTPUT_DT}
if [ ! -d ${TEMP_OUT_DIR} ];then
mkdir -p ${TEMP_OUT_DIR};
fi
cp ${backup_target} ${TEMP_OUT_DIR}/
cd ${TEMP_OUT_DIR}
zip ${OUTPUT_DIR}/${OUTPUT_DT}_MyPrj-${work}_${screen}.zip *
'리눅스 실제 사용 팁 > bash' 카테고리의 다른 글
[리눅스/윈도] awk : 필드 1개만 제외하고 전체 줄 출력하기 (0) | 2023.07.24 |
---|---|
정규식을 활용한 Underscore / Camel Case 전환 (0) | 2023.04.05 |
배열변수로 읽어들이기 (declare) (0) | 2023.04.05 |
[리눅스] watch 커맨드에 '|' 을 인자로 넣는 방법 (0) | 2023.04.05 |
curl: (n) nested brace in URL position $(num): (0) | 2023.04.05 |