쉘 스크립트를 사용하여 Linux에서 디렉토리 백업

Linux 에서 데이터를 백업하기 위한 몇 가지 옵션이 있습니다 . fwbackupsSbackup 과 같은 일부 무료 소프트웨어 프로그램을 사용할 수 있습니다 . 그러나 추가 소프트웨어를 설치하지 않고 디렉토리를 백업하는 간단한 방법이 있습니다.

변수, tar 명령 및 date 명령을 사용하여 쉘 스크립트를 생성하여 하위 디렉토리와 함께 디렉토리의 날짜가 지정된 백업 파일을 생성합니다.

셸 스크립트는 기본적으로 순서대로 실행되는 명령 목록을 포함하는 파일입니다. 정기적으로 실행하는 일련의 명령이 있는 경우 이러한 명령을 포함하는 셸 스크립트를 만드는 것이 좋습니다. 그런 다음 스크립트 파일을 실행하기만 하면 명령을 실행할 수 있습니다.

셸 스크립트 파일 만들기

이 예에서는 사용자 가이드용 파일이 포함된 디렉토리를 백업하기 위한 셸 스크립트를 만들 것입니다. 우리는 Ubuntu 에서 (Ubuntu)Gnome 환경을 사용하고 있습니다 .

먼저 장소(Places) 메뉴 에서 홈 폴더(Home Folder) 를 선택하여 홈 디렉토리에 액세스 합니다. 파일 브라우저(File Browser) 가 홈 디렉토리로 열립니다 .

홈 폴더 열기

백업을 수행하기 위한 명령을 입력할 새 빈 파일을 만들 것입니다. 오른쪽 창에서 마우스 오른쪽 버튼을 클릭 하고 (Right-click)Create Document | Empty File 팝업 메뉴에서 파일 을 비웁니다.

빈 셸 스크립트 파일 만들기

파일이 목록에 추가되고 이름을 바꿀 준비가 되었습니다. 파일 이름을 입력(Type) 하고 파일 확장자를 .sh 로 지정 합니다.

새 파일 이름을 변경할 준비가 되었습니다.

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

쉘 스크립트 파일 이름이 변경됨

이제 파일에 명령을 추가해야 합니다. 파일 이름을 마우스 오른쪽 버튼으로 클릭 하고 팝업 메뉴에서 gedit로 열기를 선택합니다.(Open with gedit)

gedit로 쉘 스크립트 파일 열기

파일이 gedit(gedit) 에서 열립니다 . 파일에 다음 줄을 입력하고 저장(Save) 을 클릭 합니다. 각 행의 목적은 다음과 같습니다.

참고: 다음 텍스트를 복사하여 (NOTE:)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

gedit에서 쉘 스크립트 파일 편집

라인별 설명

다음 표에서는 셸 스크립트 파일의 각 줄이 무엇인지 설명합니다.

Line # Description
1 This line must be the first line in a bash shell script, which is the default type of script.
2 This line sets up a variable called SRCDIR and sets the value of it to the directory to be backed up.
NOTE: Be sure to replace <username> with your username.
3 This line sets up a variable called DESTDIR and sets the value of it to the directory into which the backup file will be written.
NOTE: Be sure to replace <username> with your username.
4 This line sets up a variable called FILENAME and sets the value using text and variables containing the date command to add the current date and time to the filename. For example, the filename might be ug-20100212-13:03:45.tgz.
NOTE: When using a variable, always start it with the dollar sign ($). If you use a command as part of a variable, enclose the command and the options for the command in parentheses.
5 This line is the tar command with the following function and options added.

–create This function creates a new archive (or truncates an old one if the filename specified already exists) and writes the named files or directory to it.
–gzip This option tells tar to compress the files in the archive using the gzip utility.
–file This option gives tar the filename to use. In this case, we assembled the filename using the DESTDIR, FILENAME, and SRCDIR variables.

셸 스크립트 파일(Shell Script File) 에 대한 권한(Permissions) 편집

스크립트를 실행하기 전에 파일에 올바른 권한이 있는지 확인해야 합니다. 이렇게 하려면 위에서 언급한 대로 홈 폴더(Home Folder) 를 다시 열고 셸 스크립트 파일을 마우스 오른쪽 버튼으로 클릭합니다. 팝업 메뉴에서 속성(Properties) 을 선택 합니다.

셸 스크립트 파일의 속성 가져오기

속성(Properties) 대화 상자가 표시됩니다 . 실행(Execute) 확인란이 선택 되어 있는지(Make) 확인합니다 .

셸 스크립트 파일 권한

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

셸 스크립트 실행

셸 스크립트를 실행하려면 Accessories | Terminal응용 프로그램(Applications) 메뉴 에서 터미널 .

터미널 창 열기

터미널(Terminal) 창이 열리면 기본적으로 홈 폴더(Home Folder) 에 있어야 합니다 . 명령줄에 pwd(pwd) 를 입력 하고 Enter 키를 누르면 이 사실이 확인됩니다. 프롬프트에서 ./user_guide_backups.sh 를 입력 하고 Enter (Enter) 를 누릅니다 .

셸 스크립트 실행

홈 폴더 의 (Home Folder)백업(Backups) 폴더에 .tgz 파일 이 있어야 합니다 . 파일 이름을 마우스 오른쪽 버튼으로 클릭하면 사용 가능한 아카이브 프로그램 중 하나에서 아카이브를 열거나 Extract Here(Extract Here ) 명령 을 사용하여 Backups 폴더 에 직접 파일을 추출하는 몇 가지 옵션이 표시됩니다 .

.tgz 파일의 팝업 메뉴 옵션

추가 정보

아래 링크는 셸 스크립트, tardate 명령, 기타 Linux 명령에 대한 자세한 정보를 제공합니다.

스크립팅

bash 셸을 사용하여 스크립트를 작성하는 빠른 가이드(A quick guide to writing scripts using the bash shell)

Bash Shell Scripting – 10 Seconds Guide | All about Linux

Bash 참조 매뉴얼(Bash Reference Manual)

리눅스 명령어

tar MAN 페이지(tar MAN Page)

날짜 MAN 페이지(date MAN Page)

bash 명령 – Linux MAN 페이지(bash commands – Linux MAN Pages)

이 페이지를 탐색하면 유용한 bash 쉘 스크립트를 구성하는 데 도움이 됩니다.



About the author

저는 10년 이상의 경험을 가진 웹 개발자이자 오디오 엔지니어입니다. 저는 Chrome/Web Audio 앱과 Discord 애플리케이션 개발을 전문으로 합니다. 두 분야의 기술을 통해 사용하고 유지 관리하기 쉬운 고품질 제품을 만들 수 있습니다. 또한 저는 Discord의 숙련된 사용자이며 현재 2년 이상 앱 작업을 하고 있습니다.



Related posts