셸 스크립트란 셸, 명령어 인터프리터(윈도우의 cmd 같은 것)에서
돌아가도록 작성되었거나 한 운영체제를 위해 쓰인 스크립트이다.
이 셸 스크립트 파일을 이용해서 윈도우(클라이언트)에 있는 폴더, 파일을 의도에 맞게 추출해서 가상머신의 우분투(서버)에 자동으로 전송하는 스크립트를 만들어보았다.
Bash 입문자를 위한 핵심 요약 정리(Shell Script)
[Shell script] 간단한 쉘 스크립트 문법과 정리 예제
// 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:
#!/bin/bash
쉘 스크립트 작성시, 가장 첫 라인에 기제함으로써 스크립트 파일이 bash 쉘로 실행된다는 의미.
DAYS=$(find day* -type d)
find로 type이 directory고 day* (이름 앞에 day가 붙는) 모든 파일을 찾아낸 후
$()에 넣어 배열로 만든다.
여기서 find 뒤에 시작 경로를 지정할 수 있는데, . 을 붙여 현재 폴더부터 찾는게 좋겠지만 요소에 ./이 붙어서 하지 않았다. 일단 중요한건 아니기(?) 때문에..
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 파일이 없는 폴더는 비어있다는 안내메세지를 출력한다.
ZIP=$(find . -name "*.cs")
위 설명과 마찬가지로 .cs 확장자를 가진 모든 파일을 찾아 ZIP에 배열로 할당한다.
zip "./backup_${DATE}.zip" ${ZIP}
zip [ 압축 결과 파일명(주소 포함) ][ 압축할 대상 ]
scp "./backup_${DATE}.zip" jjuny@192.168.56.101:
scp [ 전송할 대상 ][ 전송할 주소 ]
공개키 ssh 접속
윈도우 OpenSSH 공개키 사용하기