백업 배치 스크립트와 유닛 리눅스마스터›시스템 설정·셸·쉬움

추천
북마크
질문
AI 튜터 0
root@Learnix - bash
세션 연결 준비 중
문항 난이도 2
실습 서버를 준비하고 있습니다. 문제를 먼저 읽어 두세요.
</> 문제

야간 백업을 관리자 손으로 돌리던 방식에서 systemd 작업으로 옮기는 중입니다. 보관 위치 같은 운영 파라미터는 환경 파일로 분리하고, 실제 동작은 인자와 종료코드를 제대로 갖춘 셸 스크립트가 맡으며, 관리자가 로그인해 손으로 실행할 때도 같은 경로·같은 설정이 쓰이도록 프로파일까지 정리해야 합니다. /srv/data 를 백업 대상으로 하는 일회성 서비스 유닛, 환경 파일, 실행 스크립트, 로그인 환경 설정을 만드세요.

채점은 systemctl 기동 결과가 아니라 유닛 파일의 내용과 스크립트의 실제 동작·종료코드를 검사합니다. 스크립트는 grading 시 임의의 테스트 디렉터리를 인자로 직접 호출되므로 /srv/data 전용으로 하드코딩하면 안 됩니다. 아카이브 날짜는 실행 시점의 YYYYMMDD 입니다. 환경 파일과 유닛 파일의 항목 이름·값은 지정된 동작 조건을 만족하도록 직접 정하세요.

✓ 요구 사항

1. /opt/backup/bin/backup-run.sh 를 모든 사용자가 실행할 수 있는 bash 스크립트로 만드세요. 백업할 원본 디렉터리 경로를 인자 하나로 받으며, 인자가 하나도 없으면 사용법 안내를 표준오류로 출력하고 종료코드 2로, 인자가 디렉터리가 아니면 종료코드 3으로 끝나야 합니다. 정상 처리 시에는 종료코드 0이어야 합니다.
2. 보관 위치는 /etc/sysconfig/backup 환경 파일의 BACKUP_DEST 항목으로 정하세요. 이 파일은 systemd 의 EnvironmentFile 로 그대로 읽히는 형식이어야 하므로 주석과 빈 줄 외에는 KEY=VALUE 형태만 있어야 하고, 셸에서만 해석되는 export 선언이나 명령 치환은 쓸 수 없습니다. BACKUP_DEST 는 절대경로여야 하며 그 디렉터리가 실제로 존재해야 합니다.
3. 스크립트는 유닛으로 실행될 때뿐 아니라 셸에서 직접 실행할 때도 환경 파일의 BACKUP_DEST 를 스스로 읽어 같은 곳에 저장해야 합니다. 성공하면 BACKUP_DEST 아래에 <원본 디렉터리 이름>-<YYYYMMDD>.tar.gz 이름의 gzip 압축 tar 아카이브가 원본 내용을 담아 생성되어야 합니다.
4. /etc/systemd/system/backup-nightly.service 유닛 파일을 작성하세요. 데몬이 아니라 한 번 실행되고 끝나는 작업 형태여야 하고, 2번 환경 파일을 유닛이 직접 읽도록 지정하며, 실행 명령은 위 스크립트에 /srv/data 를 인자로 넘기는 형태여야 합니다.
5. 앞으로 로그인하는 모든 사용자의 로그인 셸에서 /opt/backup/bin 이 PATH 에 포함되도록 /etc/profile.d 아래 .sh 파일로 설정하세요.

≡ 시스템 설정·셸 관련 실습 문제
리눅스마스터 문제 전체 보기
미제출
-