Window - Ubuntu. Bash shell script로 backup 파일 자동화

DD·2021년 1월 7일
0

How to

목록 보기
2/5

Bash Shell Script

셸 스크립트란 셸, 명령어 인터프리터(윈도우의 cmd 같은 것)에서   
돌아가도록 작성되었거나 한 운영체제를 위해 쓰인 스크립트이다.

이 셸 스크립트 파일을 이용해서 윈도우(클라이언트)에 있는 폴더, 파일을 의도에 맞게 추출해서 가상머신의 우분투(서버)에 자동으로 전송하는 스크립트를 만들어보았다.

shell script 기본 문법

Bash 입문자를 위한 핵심 요약 정리(Shell Script)

[Shell script] 간단한 쉘 스크립트 문법과 정리 예제

shell script 작성하기

1

// backup.sh

#!/bin/bash

DAYS=$(find day* -type d)
for day in $DAYS
do
    if [[ ! -n $(find $day/*.cs) ]]; then
        echo $day "is empty"
   fi
done

ZIP=$(find . -name "*.cs")

zip "./backup_${DATE}.zip" ${ZIP}

scp "./backup_${DATE}.zip" jjuny@192.168.56.101:

2

#!/bin/bash

쉘 스크립트 작성시, 가장 첫 라인에 기제함으로써 스크립트 파일이 bash 쉘로 실행된다는 의미.


3

DAYS=$(find day* -type d)

find로 type이 directory고 day* (이름 앞에 day가 붙는) 모든 파일을 찾아낸 후
$()에 넣어 배열로 만든다.

여기서 find 뒤에 시작 경로를 지정할 수 있는데, . 을 붙여 현재 폴더부터 찾는게 좋겠지만 요소에 ./이 붙어서 하지 않았다. 일단 중요한건 아니기(?) 때문에..


4

for day in $DAYS  
do
    if [[ ! -n $(find $day/*.cs) ]]; then
        echo $day "is empty"
   fi
done

주로 사용하는 js와 형태는 비슷하지만 {}대신 do, done, then, fi등 열고 닫는 역할이 기능마다 조금씩 다르다.

-n은 길이가 0인지 아닌지, 즉 비어있는지 판단한다.

.cs 파일이 없는 폴더는 비어있다는 안내메세지를 출력한다.


5

ZIP=$(find . -name "*.cs")

위 설명과 마찬가지로 .cs 확장자를 가진 모든 파일을 찾아 ZIP에 배열로 할당한다.


6

zip "./backup_${DATE}.zip" ${ZIP}

zip [ 압축 결과 파일명(주소 포함) ][ 압축할 대상 ]

  • window bash에서 zip: command nou found가 발생한다면
    -> 참고

  • Ubuntu에서 zip command not found가 발생한다면
    -> 참고


7

scp "./backup_${DATE}.zip" jjuny@192.168.56.101:

scp [ 전송할 대상 ][ 전송할 주소 ]

참고

+

공개키 ssh 접속
윈도우 OpenSSH 공개키 사용하기


결과

profile
기억보단 기록을 / TIL 전용 => https://velog.io/@jjuny546

0개의 댓글