Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

리눅스에서 데이터를 백업하는 방법은 다양합니다. fwbackups나 Sbackup 같은 무료 백업 프로그램을 사용할 수도 있지만, 별도의 소프트웨어를 설치하지 않고도 간단하게 디렉터리를 백업하는 방법이 있습니다.

이 글에서는 변수와 tar 명령어, date 명령어를 활용한 쉘 스크립트를 작성하여, 하위 디렉터리까지 포함한 디렉터리 전체를 날짜가 기록된 백업 파일로 만드는 과정을 단계별로 살펴봅니다.

쉘 스크립트란?

쉘 스크립트는 기본적으로 일련의 명령어가 순서대로 실행되도록 담아둔 파일입니다. 반복적으로 순서대로 실행해야 하는 명령어들이 있다면, 이를 하나의 쉘 스크립트 파일로 만들어 두면 매번 명령어를 입력할 필요 없이 스크립트 파일만 실행하면 됩니다.

쉘 스크립트 파일 만들기

이 예제에서는 사용자 가이드 파일이 들어 있는 디렉터리를 백업하는 쉘 스크립트를 작성해 보겠습니다. 환경은 우분투(Ubuntu)그놈(GNOME) 데스크톱 환경을 기준으로 합니다.

먼저 메뉴에서 Home Folder(홈 폴더)를 선택해 홈 디렉터리에 접근합니다. 그러면 파일 브라우저가 홈 디렉터리에서 열립니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

이제 백업 명령어를 입력할 새 빈 파일을 생성합니다. 오른쪽 창에서 마우스 오른쪽 버튼을 클릭하고 팝업 메뉴에서 Create Document | Empty File(문서 만들기 | 빈 파일)을 선택하세요.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

파일 목록에 새 파일이 추가되며 이름을 바꿀 수 있는 상태가 됩니다. 파일 이름을 입력하고 확장자는 반드시 .sh로 지정합니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

이 예제에서는 파일 이름을 user_guide_backups.sh로 지정했습니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

다음은 파일에 명령어를 추가할 차례입니다. 파일 이름에서 마우스 오른쪽 버튼을 클릭하고 팝업 메뉴에서 Open with gedit(gedit로 열기)를 선택합니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

파일이 gedit 편집기로 열리면 아래 내용을 입력하고 Save(저장)를 클릭합니다. 각 줄의 역할은 뒤에서 자세히 설명합니다.

참고: 아래 텍스트를 그대로 복사해서 gedit에 붙여넣어도 됩니다. 단, <username> 부분은 반드시 본인의 사용자 이름으로 변경해야 합니다.

#!/bin/bash
 SRCDIR="/home/<username>/Documents/my_work/"
 DESTDIR="/home/<username>/Backups/"
 FILENAME=ug-$(date +%-Y%-m%-d)-$(date +%-T).tgz
 tar --create --gzip --file=$DESTDIR$FILENAME $SRCDIR

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

스크립트 한 줄씩 살펴보기

각 줄이 어떤 역할을 하는지 표로 정리했습니다.

줄 번호설명
1bash 쉘 스크립트의 첫 줄에 반드시 들어가야 하는 선언문입니다. bash는 리눅스의 기본 스크립트 유형입니다.
2SRCDIR이라는 변수를 만들고, 백업할 디렉터리 경로를 값으로 지정합니다.
참고: <username>은 반드시 본인의 사용자 이름으로 교체하세요.
3DESTDIR이라는 변수를 만들고, 백업 파일이 저장될 디렉터리 경로를 값으로 지정합니다.
참고: 마찬가지로 <username>을 본인의 사용자 이름으로 교체하세요.
4FILENAME이라는 변수를 만들고, 텍스트와 date 명령어 결과를 조합해 현재 날짜와 시간이 포함된 파일 이름을 지정합니다. 예를 들어 ug-20100212-13:03:45.tgz처럼 생성됩니다.
참고: 변수를 사용할 때는 항상 달러 기호($)로 시작해야 하며, 변수 값에 명령어를 포함하려면 명령어와 옵션을 괄호로 묶어야 합니다.
5실제 백업을 수행하는 tar 명령어 줄입니다. 아래 표의 기능과 옵션이 사용됩니다.
옵션설명
--create새 아카이브를 생성합니다(지정한 파일 이름이 이미 존재하면 기존 파일을 덮어씁니다). 지정된 파일이나 디렉터리를 아카이브에 기록합니다.
--gziptar에게 아카이브 내 파일들을 gzip 유틸리티로 압축하도록 지시하는 옵션입니다.
--filetar가 사용할 파일 이름을 지정하는 옵션입니다. 여기서는 DESTDIR, FILENAME, SRCDIR 변수를 조합해 파일 이름을 구성했습니다.

쉘 스크립트 파일 권한 설정하기

스크립트를 실행하기 전에 파일에 올바른 실행 권한이 부여되어 있는지 확인해야 합니다. 앞서 설명한 방법으로 다시 Home Folder(홈 폴더)를 열고, 쉘 스크립트 파일에서 마우스 오른쪽 버튼을 클릭한 뒤 팝업 메뉴에서 Properties(속성)를 선택합니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

속성 대화 상자가 열리면 Execute(실행) 확인란이 선택되어 있는지 확인합니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

확인 후 Close(닫기)를 클릭합니다.

쉘 스크립트 실행하기

쉘 스크립트를 실행하려면 응용 프로그램 메뉴에서 Accessories | Terminal(보조프로그램 | 터미널)을 선택해 터미널 창을 엽니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

터미널 창이 열리면 기본적으로 홈 폴더에 위치해 있습니다. 명령줄에 pwd를 입력하고 Enter 키를 누르면 현재 위치를 확인할 수 있습니다. 프롬프트에 ./user_guide_backups.sh를 입력하고 Enter 키를 누르세요.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

실행이 완료되면 홈 폴더의 Backups 폴더 안에 .tgz 백업 파일이 생성됩니다. 파일 이름에서 마우스 오른쪽 버튼을 클릭하면 설치된 압축 프로그램으로 아카이브를 열거나, Extract Here(여기에 추출) 명령으로 파일을 Backups 폴더에 바로 풀어낼 수 있습니다.

리눅스에서 쉘 스크립트로 디렉터리 자동 백업하기 – tar와 date 명령어 활용 가이드

추가 참고 자료

아래 자료들은 쉘 스크립트, tardate 명령어, 그 외 리눅스 명령어에 대해 더 깊이 학습하는 데 도움이 됩니다.

스크립팅 관련

bash 쉘로 스크립트 작성하기 – 빠른 입문 가이드

Bash Shell Scripting – 10 Seconds Guide | All about Linux

Bash Reference Manual(Bash 공식 참조 매뉴얼)

리눅스 명령어 관련

tar MAN 페이지

date MAN 페이지

bash commands – Linux MAN Pages

이런 문서들을 꾸준히 살펴보면 자신만의 실용적인 bash 쉘 스크립트를 직접 만들 수 있는 능력을 키울 수 있습니다.