UBUNTU 웹서버

리눅스 서버에서 자동으로 지속적인 파일 백업 수행하기


리눅스 서버에서 자동으로 지속적인 파일 백업 수행하기


  2021-09-07  414 View 공개

개인 웹 서버를 운용하는 상황에서는 백업이 굉장히 중요한 요소이다.  
대형 블로그 서비스들은 다 내부적으로 수행하고 있지만, 저는 수행하고 있지 않았는데 수행하는 방법에 대하여 알아보았다.  

Lael's World 님의 블로그 포스팅을 참조하여 수행하였다.


저는 일단 파일만 압축하여 디비도 함께 압축하여 저장하는 방식을 사용했다.
db 까지 따로 백업하려면, 경우에는 아래의 참조에서 링크를 타고 가시면 좋은 설명이 되어 있다.

저는 내장 DB sqlite3를 사용해서 해당 명령어는 필요 없다고 판단했다 . 
저는 블로그를 호스팅 하여 사용하기 때문에, 백업이 필요하다고 판단하여 백업을 미루다 미루다 오늘 포스팅 하게 된다.  


- 백업할 디렉토리 및 저장 기간, 저장 방식 설정 

저 같은 경우에는 블록 스토리지가 있어서 해당 스토리지에 저장하는 방식을 사용한다.
백업의 경우에 해당 방식을 많이 사용하겠지만, 같은 디스크의 다른 폴더에 그냥 백업을 할 수도 있을 겁니다. 

$df -Th

위의 명령어를 통해서 디스크의 여유 공간을 확인한다.  


저는 10GB의 스토리지를 보유하고 있고, 현재 한 번 압축하면 해당 파일이 차지하는 용량은 500MB 정도로 보여집니다. 
따라서, 어느 정도 된 파일은 지속적으로 지워줘야 된다.  
DB가 지속적으로 증가할 것을 고려하면 대략 하루에 한 번씩 백업하면, 14~15일 정도가 지금으로써는 적당한 것 같다.  

블록 스토리지가 상대적으로 저렴하기 때문에, 비용을 2000원(제 호스팅 서비스) 정도 추가하면 보름 정도는 더 저장할 수 있는 것 같다.  
스토리지 용량에 기간을 맞추는 것이 아니라, 원하는 기간에 맞춰서 알맞게 스토리지를 맞추는 것도 좋을 것 같다.  



백업 방식의 종류로는 아래와 같은 방식이 있다.
저는 증분을 사용하고 싶지만, 지식이 부족하여 압축을 사용하기로 했다 .

압축 백업 : (tar -czpf 백업) 일반적으로 많이 쓰이는 백업이다.  이 작업에는 CPU 가 많이 사용됩니다.
10GB 미만 압축이면 상관없는데 그 이상의 대용량의 압축 백업은 주의가 필요하다. 백업 시켜놓고 CPU 사용량을 확인한다.
복사 백업 : (cp -R 백업) 압축하지 않고 복사만 한다. 사용 용량을 많이 차지하지만 (압축하지 않는다는 뜻) 백업할 때 CPU 사용량이 크게 증가하지는 않다.
증분 백업 : (rsync 백업) 변동사항만 비교하여 백업한다. 비교를 위해서 파일은 항상 압축되지 않은 상태로 보관됩니다.

어짜피 개인 블로그 목적의 백업이고, 새벽 시간을 이용하면 CPU 자원이 충분하기 때문이라고 생각해서이다.  



아래와 같이 정리해보았습니다. 

@ 백업 정책 @
보관 기간 : 14일
백업 방식 : 압축 백업
백업 시간 : 새벽 4시
백업 횟수 : 하루 1회





아래의 명령어에서 () 는 빼고 사용하셔야 한다. 

1) 백업할 폴더 생성 후 퍼미션 설정

$ mkdir (백업하고 싶은 위치)
$ chmod 700 (백업하고 싶은 위치)


2) 백업 스크립트 작성 

$ cd /root
$ vim backup.sh


tar 명령어는 파일 압축 백업을 실시한다. 

find 관련 명령어는 10일이 지난 파일을 삭제한다. 
find 명령어 뒤에 파이프라인을 보면 rm 명령어를 확인하실 수 있다.  
리눅스 명령어를 배우고, 활용을 안해봐서 직접 작성은 쉽지 않네요. 

역시 명령어에서 괄호는 모두 제거하고 넣어주세요 

  #!/bin/bash

  tar -czpf (백업할 디렉토리명)/(자신이 사용할 파일명).`date +%Y%m%d%H%M%S`.tgz (백업을 원하는 원하는 파일, 폴더) 1>/dev/null 2>/dev/null
  3 find (백업할 디렉토리명) -type f -mtime +14 | sort | xargs rm -f



3) 백업 스크립트 퍼미션 설정 및 수행 확인 

$ chmod 700 backup.sh
$ ./backup.sh
저는 테스트 결과 아래와 같이 파일이 잘 생성되었다 . 




4) 주기적인 실행 

crontab -e

위와 같은 명령어를 실행해서, 아래와 같이 명령어를 추가해준다.  
4가 시간이다.   24시간 기준이고 가령 오후 4시에 하고 싶으면 12를 더한 16을 사용하면 된다.  

0 4 * * * /root/backup.sh 1>/dev/null 2>/dev/null

#

# For more information see the manual pages of crontab(5) and cron(8)

#

# m h  dom mon dow   command
0 4 * * * /root/backup.sh 1>/dev/null 2>/dev/null



5) 확인해보자!

자고 일어나서 확인해보세요~ 



- 출처 - 

https://blog.lael.be/post/1449 


Tags  #Linux  



🚩 UBUNTU 웹서버 글 모음 (총 14 건)

[APACHE] 아파치 로그에 이미지 제외하기

Last Updated : 2022-05-20
#Apache

[UBUNTU] APACHE2 설치

Last Updated : 2021-11-01
#Apache

[APACHE] 아파치 로그 로테이션 (rotetalogs)

Last Updated : 2021-10-15
#Apache

[APACHE] 아파치 로그파일 형식 지정

Last Updated : 2021-10-15
#Apache

Lets Encrypt 설정

Last Updated : 2021-09-15
#Lets_Encrypt

Alteon L4 초기 설정/로드밸런싱 설정

Last Updated : 2021-09-11