개요
이전에 작성했었던 리눅스 시스템 정보 수집 스크립트를 참고하여
간단한 백업 스크립트를 작성해보도록 하겠다.
스크립트
스크립트 설명
- 구현 중 이해하기 힘들었던 코드들만 설명
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_DIR
와 TARGETS
도 동일한 맥락으로 이해하면 된다.
2. 타겟 문자열을 배열로 변환
IFS=$'\n' read -d '' -r -a TARGET_ARRAY <<< "$TARGETS"
TARGETS
문자열을 줄 단위로 읽어 배열TARGET_ARRAY
에 저장
실행 결과