[Linux] 셸 스크립트 자동화

최대 1 분 소요

1. backup 경로 아래에 오늘 날짜를 이름으로 하는 디렉토리를 생성한다.

$ mkdir 20210720


2. 아래 두 개의 명령어를 셸 스크립트로 작성한다.

  1. zip.sh : /var/log/syslog/var/log/dmesg 파일을 log_20210720-1300.zip 형태로 압축한다.

    • 변수 date에는 date를 YYMMDD 형태로 파싱해 저장한다.
    • 변수 time에는 date를 hhmm 형태로 파싱해 저장한다.
    • 두 파일들을 압축한 .zip 파일을 zip 명령어를 통해 원하는 절대 경로와 파일명을 기입후 압축한다.
  2. copy.sh : /var/log/syslog 파일을 /var/log/syslog_1로 복사한다.

    • 먼저 /var/log/syslog_1 파일의 존재 유무를 판단하고, 존재하면 해당 파일을 삭제한다.
    • /var/log/syslog 파일을 /var/log/syslog_1 파일로 복사한다.


3. crontab을 문제 기준에 맞게 작성한다.

  • 첫 번째 명령은 0분, 5분, 10분 등 5분 간격으로 zip.sh 을 실행한다.
  • 두 번째 명령은 매 시 29분마다 copy.sh 를 실행한다.
  • 세 번째 명령은 매 시 59분마다 copy.sh 를 실행한다.
  • 주의할 점은 sudo 권한으로 crontab을 실행시켜야 정상적으로 작동한다는 점이었다.


4 . 결과는 위와 같다. 5분 간격으로 두 파일을 압축한 .zip 파일이 보이고,


5 . 만들어진 .zip 파일들을 가져오기 위해 로컬에서 쉘 스크립트를 아래와 같이 작성한다.

  • -r 옵션을 주면, 가져오고자 하는 경로의 파일이 디렉토리로 설정되어, 해당 디렉토리 내부 모든 파일을 가져오게 된다.


6 . 이제 작성한 get.sh 셸 스크립트를 실행시키면 아래와 같이 폴더 자체가 잘 전송되는 것을 확인할 수 있다.

카테고리:

업데이트:

댓글남기기