Profile picture

[Shell Script] 가독성 좋은 디렉토리 백업 스크립트 만들기

JaehyoJJAng2024년 02월 10일

개요

이전에 작성했었던 리눅스 시스템 정보 수집 스크립트를 참고하여

간단한 백업 스크립트를 작성해보도록 하겠다.


스크립트

image


스크립트 설명

  • 구현 중 이해하기 힘들었던 코드들만 설명

1. 태그 읽어오기

TAG=$(sed -n '/^\[tag\]/,/^\[/p' $CONFIG_FILE | grep -v '\[.*\]' | tr -d '[:space:]')
  • sed는 스트림 편집기입니다.
  • -n 옵션은 sed의 출력 억제 모드로, 명령어로 지정된 라인만 출력합니다.
  • '/^\[tag\]/,/^\[/p'[tag]로 시작하는 줄부터 다음 [ ]로 시작하는 줄까지의 범위를 출력합니다.
    • ^\[tag\]: [tag]로 시작하는 줄
    • ,: 범위 지정
    • ^\[ : 다음 [ ]로 시작하는 줄 (포함하지 않음)
    • p: 출력 명령
  • | grep -v '\[.*\]'
    • 파이프 |를 사용하여 sed 명령의 출력을 grep으로 전달합니다.
    • grep -v '\[.*\]'는 대괄호로 둘러싸인 줄을 제외하고 출력합니다. 즉, [tag]나 [backup dir]와 같은 줄을 제외합니다.
  • | tr -d '[:space:]'
    • tr 명령은 문자를 변환하거나 삭제합니다.
    • -d '[:space:]'는 모든 공백 문자를 삭제합니다. 이로 인해 stable이라는 순수한 문자열만 남게 됩니다.

BACKUP_DIRTARGETS도 동일한 맥락으로 이해하면 된다.


2. 타겟 문자열을 배열로 변환

IFS=$'\n' read -d '' -r -a TARGET_ARRAY <<< "$TARGETS"
  • TARGETS 문자열을 줄 단위로 읽어 배열 TARGET_ARRAY에 저장

실행 결과

image
image


Loading script...