리눅스 서버에 저장된 엄청나게 많은 image file에 대한 backup

엄청나게 많은 image file을 backup 받는다는게 만만치 않은 작업이더군요.

Directory가 3단계의 구조로 되어 있는데,

첫번째 단계에 디렉토리 명이 000에서 999까지 있고,

두번째 하위 단계 디렉토리에서 다시 00에서 99까지 있으며,

세번째 단계 하위 디렉토리에 또 다시 000에서 999까지 있고,

세번째 단계 디렉토리 안에 이미지 파일들이 저장되고 있는 구조랍니다.

매일  image 파일들이 많게는 1G 정도 생성되고 있고,

전체 용량이 1T 정도 되는데…

전체 backup도 해야하고, 일정 기간마다 추가 변경된 file들만 뽑아서

오프라인 백업을 받아 두려고 하는데

작은 용량의 이미지 파일들의 갯수가 너무 많기 때문에 backup 받기가 만만치 않더군요..

EMC나 NetApp 같은 업체의 스토리지를 추가하자니 비용의 문제도 있고…

Disk에 저장하자니 위변조나 장기 보관에 있어서 마땅치 않아서

DVD나 블루레이어 같은 광매체에 백업 받는 것을 검토했답니다.

방식은 스크립트에 의한 자동 백업과 광매체에 저장할 때  등에서 수작업 방식을 겸하는 형태로 해서 하는 것으로 정했고요.

Linux 서버에 있는 이미지 file들을 윈도 PC로 복사한 후에 광매체에 저장하기로 했는데…

처음에는 단순하게

파일들을 FTP를 이용해서 있는 그대로 복사하려고 해보았는데…

파일 갯수가 많아서 그런지 수~ 기가의 용량이 전송되면서 자꾸만 접속이 끊겨 버리는 문제와

많은 갯수의 파일로 인한 속도가 엄청나게 저하되는 문제가 있어서

방식을 바꾸어

tar을 이용해서 한개 파일로 묶어서 복사하려고 해보았는데..

파일을 DVD나 BD 디스크 용량에 맞춰 파일을 잘라 줘야하는 문제에 부딪치게 되더군요.

그래서,

전체 백업은 1단계의 상위 디렉토리 단위로 나눠서 tar로 묶도록 하는 script를 만들어 처리하고,

매일 변경된 파일의 백업은 변경된 파일들만을 골라서 묶어 PC로 자동 FTP 전송하도록 하는 script를 만들어서 crontab에 등록해서 처리하는 방식을 계획하게 되었답니다.

 

<<전체 backup을 위한 script>>

cd /image

ls -l | awk ‘{a=$9; tfile=”/backup/” a “.tar.gz”; cmd=”tar -czf ” tfile ” ” a; if ( a != “” && a != “a” ) {system(cmd)} }’

 

<<매일 변경된 file들만 선별해서 backup을 받기 위한 script>>

#!/bin/sh

day=$(date +%Y%m%d )

pname=BK$day”.tar.gz”

fname=/backup/$pname

cd /image

#변경된 파일들만 골라서 tar을 이용해 1개 파일로 만듬

find . -ctime -1 -type f | xargs tar -czvf $fname > $fname”.log”

cd /backup

#tar을 이용해 묶어진 파일을 FTP 서버가 설치된 PC에 접속하여 자동 전송 처리

ftp -i -n 192.168.200.250 << ENDOFFTP

user backup backup

bin

cd backup

put $pname

close

quit

ENDOFFTP

 

 

전체 백업은 1년에 한번 정도 수기 실행하면 될 거 같고..

매일 변경된 파일들만 묶어서 받는 백업은 crontab에서 자동 실행하는 방식으로 작동시켜 두고서

한달에 한번 정도 광매체 용량에 맞춰 나눠 받고 있답니다.

 

전체 백업에 있어서는 노가다(?)를 많이 해야하고,

매일 변경된 파일을 백업 받을 때는 한달에 한번 정도 커피한잔 정도하면서 노가다(?)를 하면 될 거 같습니다~ ^^*

About wansoo

wansoo

Leave a Reply

1 개의 댓글이 있습니다 - "리눅스 서버에 저장된 엄청나게 많은 image file에 대한 backup"

메일 알림 설정
정렬:   최신 | 오래된 | 추천
SharedIT

이벤트에 해당되셨습니다. ^^ 좋은글 감사합니다.

wpDiscuz