우분투 clon 설정 > 우툰투 자료실

본문 바로가기

우툰투 자료실

우툰투 자료실 HOME


우분투 clon 설정

페이지 정보

작성자 정성규 댓글 0건 조회 19,420회 작성일 12-06-08 10:20

본문

http://enanim.tistory.com/184

 

*우분투 크론 (예약작업)  설정
우선작업
/var/ 아래 cron_backup 이라는 폴더를 생성 하며 755 권한으로 설정
웹소스 파일 백업 /var/cron_backup/ 디렉토리 아래  vi web_souce_bak 생성
DB 파일 백업 /var/cron_backup/ 디렉토리 아래 db_mysql_bak 생성
모든 백업 실행 파일 및 데이터는 /var/cron_backup 디렉토리 아래 두도록 한다.
 1 . 백업(웹) 쉘스크립트 만들기    # vi /var/cron_backup/web_souce_bak
# vi /var/cron_backup/web_souce_bak
   #!/bin/sh
   tar -zcvf /var/cron_backup/home_backup_$(date +%Y%m%d).tar /home/
   gzip -f /var/cron_backup/home_backup_$(date +%Y%m%d).tar
   tar -zcvf /var/cron_backup/www_backup_$(date +%Y%m%d).tar /var/www/
   gzip -f /var/cron_backup/www_backup_$(date +%Y%m%d).tar
$(date+%Y%m%d%H%M%S)
출력 : 년월일시분초
홈 디렉토리 www 디렉토리 백업
 2 . 백업(DB) 쉘스크립트 만들기 #vi /var/cron_backup/db_mysql_bak
#vi /var/cron_backup/db_mysql_bak
   #!/bin/sh
   mkdir /var/cron_backup/mysql_$(date +%Y%m%d)
   /usr/bin/mysqldump -u root -p비밀번호 -A > /var/cron_backup/mysql_$(date +%Y%m%d)/db_all_bak.sql
/var/cron_backup/ 디렉토리 아래
mysql_년월일 디렉토리를 만들고
그안에 모든 DB 를 백업
 3 . 크론에 수행작업 등록하기
 # crontab -e   // 크론 등록하기
          # m  h dom mon dow command
          00 4 * * 1 /bin/sh /var/cron_backup/web_souce_bak
          30 4 * * * /bin/sh /var/cron_backup/db_mysql_bak
웹소스는 월요일 새벽4시 실행
디비 소스는 매일 새벽4시반 실행
 4 . 등록된 예약작업 확인
crontab -l
tail -f /var/log/syslog
예약내용 확인
시스템 로그 보기(안해도됨)
추가 설명
crontab -e 사용시 나오는
# m h dom mon dow command
m = 분 설정 minute (0-59)       30 * * * * 실행문    // 설정 하면
매시간 30분
마다 실행문 실행
h = 시간 설정 hour (0-23 , 0 저녁)        30 12 * * * 실행문    // 설정 하면
매일 12시30분
마다 실행문 실행
dom = 일자 설정 day (1~31)       30 12 5 * * 실행문    // 설정 하면
매달 5일 12시30분
마다 실행문 실행
mon = 월 설정 month (1~12)       30 12 5 7 * 실행문    // 설정 하면
매년 7월 5일 12시30분
마다 실행문 실행
dow = 요일 설정  weekday ( 0~6 , 0 = Sunday )       30 12 * * 0 실행문    // 설정 하면
매주 일요일 12시30분
마다 실행
* 설정 하면 항상 으로 설정됨
원문 : https://help.ubuntu.com/community/CronHowto

 

 

 

tar 파일의 이름을 백업된 날짜로 지정하고, 압축하여 저장하고 싶은 경우에는
다음과 같이 명령을 내리면 됩니다.

# tar -zcvpf /backup/`date '+%d-%B-%Y'`.tar.gz --directory / .

위에서 사용된 옵션을 살펴보면,
z는 gzip 알고리즘으로 압축하라는 의미이고,
c는 create의 약자로 /backup/<백업날짜>.tar.gz의 파일을 만들라는 의미이며,
v는 verbose로 백업되는 파일명들을 나열하라는 의미이며,
p는 permission의 약자로 파일의 권한을 보존하도록 하는 옵션이며,
f는 file의 약자로 이 옵션 다음에 백업되어 저장될 파일의 이름을 기록하는 곳입니다.
-- directory는 루트 디렉토리(/)로 이동해서 백업을 하라는 의미이며,
마침표(.)는 현재 디렉토리에 존재하는 모든 파일과 디렉토리들을 백업하라는
의미입니다.
참고로 테이프에 백업할 경우에는 압축해서 보관하지 않는 것이 좋습니다.
만약 테이프에 이상이 생기면 압축해서 보관한 경우에는 파일을 복구하기가
어렵지만 압축하지 않은 tar 파일에서는 많은 부분들을 건질 수가 있기 때문입니다.

특정한 디렉토리는 백업에서 제외하기 위해서는 다음과 같이 명령을 내리면 됩니다.

# tar -cvpf /dev/st0 -- label = "Backup date `date '+%d-%B-%Y'`"
-- directory / --exclude=/tmp --exclude=/temp

우분투 백업 - tar 명령으로 복사해버리자  ubuntu / PC  2008/08/31 20:01

 http://songeehana.blog.me/40054589554


 

결론부터 말하면 이방법 역시 상당히 불편하고, 주의하지 않고 실수하면 다른 하드의 소중한 데이터까지 날릴 위험이 있다.!!

 

백업하는데 고스트는 이미지 파일이 ext3에 저장안되서 따로 ntfs 파티션을 만들어줘야 하고,

partimage는 라이브씨디가 있어야 한다는 단점이 있어서 실망하게 되고,

모두가 리눅스를 제대로 이해못한 무지에서 비롯한 문제였다. 간단한 해결책이 있었네..

(mondo 프리웨어이고 부팅미디어로 가능, mondo 에 대해서 다시 알아볼것)


 

출처 :

    http://cafe.naver.com/bitex301.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=65

    http://ubuntuforums.org/showthread.php?t=35087


    http://ubuntuforums.org/showthread.php?t=24113&highlight=grub+restore

    대충 추려서 옮긴다.. 포스트를 좀 읽어보려고 하는데 53페이지 540개 댓글이 달려있다;; 포기..

    author : Heliode @ UbuntuForums.org

 

윈도우에서는 사용중인 파일을 덮어쓸수 없고, 페이지 파일이며 등등 이유로 통채로 C:\를 복사하기는 힘들다.

그래서 고스트 같은 프로그램으로 재부팅을 해가면서 백업을 한다. 리눅스에서는 그런 프로그램이 필요가 없다.

사실 ext2,ext3 파일 시스템을 우분투의 기본 파티션으로 사용한다면 되려 고스트를 사용하지 않는 것이 좋다.

ext2 파티션등은 데이터가 엉킬 것이다. 근데 다들 이렇게 말하는데 우분투를 고스트로 백업 & 리스토어 해보면 잘만되던걸..

 

★★ 1. 백업
TAR를 사용한다. 그저 파티션의 모든 데이터를 tar 파일에 구겨 넣으면 된다.

일단

 

sudo su

 

명령으로 root 관리자가 되자. 그리고 여러분의 파일 시스템의 루트로 간다.

 

cd /

 

그후 다음 명령으로 전체 시스템을 백업한다.

 

tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

 

이것들을 설명해보면
tar 는 우리가 백업할 때 쓸 프로그램이다.
cvpfz 는 create archive, preserve permissions, gzip 사용 압축파일로 용량줄임
backup.tgz 는 압축파일 이름
맨마지막 / 모든 것을 백업 할 것임으로 /
백업에 제외할 디렉토리를 정한다. 쓸모없는 디렉토리와, 백업파일 자신을 꼭 제외시켜주어야 한다.
또한 다른 파티션의 하드를 마운트한 /mnt 등의 디렉토리도 제외시키고 싶을 것이다.
/media   /dev 등의 디렉토리도 빼주자. /sys, /dev 는 가상적인 디렉토리이다.

백업이 완료된 후 에러매세지를 볼수가 있는데 대부분의 경우 무시해도 된다.

bzip2로 압축하면 속도는 더 느려지고 압축률은 더 좋아질 것이다.


tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys /

 

★★ 2. 복구

루트권한을 얻고, 백업파일이 루트에 있는지 확인한다.
리눅스의 멋진점 중 하나가 이 복구 과정이 시스템이 돌아가는 도중에도 심지어 가능하다는 점이다.
(심지어 시스템이 돌아가는 도중 "모든" 파일을 삭제해버릴수도 있다.

이명령은 rm -rfv /* 이다. 포럼에서 장난치는 놈들에게 당하지 않기위해서라도 알아둘것..)

부팅시디니 뭐니 머리 아플일이 없다. 물론 시스템이 부팅 안되는 상황에서는 LiveCD를 이용할 수 밖에 없다.

 

tar xvpfz backup.tgz -C /

 

bzip을 사용했다면

tar xvpfj backup.tar.bz2 -C /

 

 

마지막의 -C / 옵션때문에 백업파일이 루트가 아닌 다른 곳에 저장되어있는 상태라도 복구가 제대로 이루어진다.

단 백업에서 제외했던 디렉토리는 직접 만들어 주어라


mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
etc...

 

재부팅을 하면 백업전과 똑같은 상태로 돌아갈 것이다.

 

★★ 2.1 GRUB 복구


새로운 하드 디스크로 시스템을 옮기거나, windows 등을 설치하여 GRUB이 손상되었다면 GRUB 또한 복구해야한다.
이 과정은 설명은 생략하고 링크를 건다.

http://ubuntuforums.org/showthread.php?t=24113&highlight=grub+restore

몇가지 방법중에 개인적으로 추천하는 방법은 remmelt 가 쓴 2번째 방법이다. 나는 그방법으로는 실패한적이 없다.

 

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 

★★ grub 복구

출처 : http://ubuntuforums.org/showthread.php?t=24113&highlight=grub+restore

author : remmelt @ UbuntuForums.org

1. LiveCD로 부팅해서 데스크탑 메뉴를 띄운다.

2. 터미널 창을 열거나 tty로 전환한다.

3. grub 이라고 타자친다.

4. root (hd0,6) 이라고 타자치거나 여러분의 하드디스크 + 부트 파티션 넘버를 친다.

내 경우는 /dev/sda7 인데 grub에서 쓰는 용어로 바꾸면 hd0,6 이 된다.

5. setup (hd0) 이나 여러분의 하드디스크 넘버를 타자친다.

6. quit 을 쳐서 grub을 종료한다.

7 다시 부팅

 

>> 뭔가 그럴듯해보이고 멋져보이는데... 막상 해보려니 만만치 않게 짜증나는 방법이다.

일단 시스템이 엉망이어서 부팅이 안된다라는 전제하에 liveCD로 부팅을 해서 하드들을 마운트하고 압축파일을 풀어주었는데

그냥 덮어쓰는것만으로는 문제해결이 안된다. 멀쩡한 파일들외에 잘못된 파일들이 추가된 것이 시스템이 망가진 원인이라면

이런식의 덮어 쓰기는 무의미한 것이 되기 때문인 것 같다.

그래서 시스템 파일이 마운트된 파티션을 포맷 or 삭제하고 압축파일을 풀어주어야 한다.


그러려면 약간 수정해서 압축파일은 다른 파티션에 만들어 지게 코드를 바꿔주어야 한다.

라이브씨디로 부팅하고, 파티션들 마운트하고, 명령어들도 일일히 신경써서 타자쳐야하고 (실수하면 시스템 파일쪽 말고 데이터


저장한 파티션이 날아간다. 극도로 짜증나게 신경써주어야 한다.하드파티션 구별이 드라이브명으로 명확히 구분되는 윈도우


파일시스템과 달리 리눅스 시스템은 일개 디렉토리로 불과하다. 완전히 구조를 알고 하위구조의 일부를 제외시켜주어야 한다.)

지울때 rm 옵션에 오타 하나라도 나면 자료가 홀랑 날아가는 것이다. 항상 데이터들이 들어간 폴더(=하드파티션)는 루트폴더보다

하위 폴더가 당연할테니, 아예 안전하게 데이터들이 들어간 파티션들을 언마운트 시키고 해야할 것이다.

이미 이정도까지 과정까지 온다면 다른 복구툴에 비해 더이상 간단하지만은 않다. 이미 이정도면 partimage쪽이 더 편하다.

 

흠  rm -rf / 명령을 이용하면 되려나.. 하지만 아직까지 명령어 필터를 몰라서 데이터가 보관된 디렉토리를 빼줄 필터명령어를
모르겠다. 이렇게 시스템 쪽 하드 드라이브를 전부를 지우고 난후에도, 램에 상주하고 있는 데이터만으로 리눅스가 여전히 돌아가려나?
돌아간다해도 압축명령을 이용해서 풀어야 하는데 압축명령어가 램에 상주하고 있으려나?

설사된다해도 리스크가 너무 큰 방법이어서 쓰고 싶지 않다. 내가 리눅스를 쓰는 가장 큰 이유는 바이러스 위험이 없는


안전한 곳에 중요한 데이터를 보관하는 것이다. 타자 오타 한번으로 중요 데이터 모두 날릴 위험을 굳이 사서 할 이유는..


굳이 이 방법으로 안전하게 사용하려면,
데이터 디스크쪽 디렉토리를 백업만들때 옵션으로 제거해서 tar 파일을 만들고,
복구할때는 데이터 디스크의 선을 물리적으로 직접 제거한후, 루트 디스크 쪽을 포맷하거나 전체 삭제명령으로 깨끗이 한후
복구명령을 하면 된다. 물론 이때 tar 파일을 어디에 둘것이냐가 조금 애매하긴하지만, 어차피 시스템 파티션 15기가면
널널하게 남으니, 대부분 하드 디스크 파티션 나눠서 사용할것이므로 여분의 남는 파티션에 tar 파일을 두면 된다.
테라급 하드 하나로 파티션 나눠서 사용하는 경우라면 데이타 있는 거대한 파티션을 물리적으로 연결해제못하니 언마운트만 가능하고...

 

# 콘솔에서 휴지통으로 버리는 명령어를 새로 만들자.

    출처 : http://kldp.org/node/59050

 


    rm을 안쓰는 것도 하나의 방법....

    .bashrc에 다음과 같은 코드를 추가합니다.

    # goodbye to the scary rm.    alias trash='mv -t /home/kekeke/.trash-files'    터미널에서 파일을 지우고싶을 때에는 다음처럼:
    trash file1 file2 dir1 dir2...
=================================
* 내가 실행한 스크립트

- 백업

tar cvpjf /whole_backup/whole_backup_`date +'%Y%m%d_%H%M%S'`.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/backup --exclude=/install_files --exclude=/whole_backup /

   # 참고 : 마지막의 / 는 tar의 대상이 루트 이하 전체임을 의미한다.

   # 주의사항 :

     - tar 대상 경로 내에 tar 결과파일이 포함되지 않도록 반드시 exclude 처리를 해 주어야 한다.
       그렇지 않으면 'tar: .: file changed as we read it' 에러가 발생하게 된다.
     - 휴지통을 비우고 백업을 실행하자

   # 별도로 백업해야 할 데이터
         - ThunderBird 메일 데이터


=========================================
!/bin/sh
   tar -zcvf /var/cron_backup/home_backup_$(date +%Y%m%d).tar /home/
   gzip -f /var/cron_backup/home_backup_$(date +%Y%m%d).tar
   tar -zcvf /var/cron_backup/www_backup_$(date +%Y%m%d).tar /var/www/
   gzip -f /var/cron_backup/www_backup_$(date +%Y%m%d).tar

 

 

 

 

======================================================================

출처: http://bomool.net/bbs/board.php?bo_table=bo0101&wr_id=10

관리자 권한을 얻은 뒤 /etc/cron.daily/backup 이라는 파일을 만들어봅시다.

# sudo -i
# cd /etc/cron.daily/
# vi backup

다음과 같은 내용을 넣어줍니다.
#!/bin/sh
DATE=`date +"%Y%m%d"`
PREV_DATE=`date --date '5 days ago' +"%Y%m%d"`

BACKUP_DIR=/home/abcd_backup

/usr/bin/mysqldump -u MySQL사용자이름 -p비번 디비이름 > ${BACKUP_DIR}/abcd_mysqldump_${DATE}.sql
chown root.root ${BACKUP_DIR}/abcd_mysqldump_${DATE}.sql
chmod 755 ${BACKUP_DIR}/abcd_mysqldump_${DATE}.sql
rm -Rf ${BACKUP_DIR}/abcd_mysqldump_${PREV_DATE}.sql

tar -zcvf ${BACKUP_DIR}/abcd_backup_${DATE}.tar /home/abcd/public_html/* --exclude=/home/abcd/public_html/data/session/* --exclude=*.tar
chown root.root ${BACKUP_DIR}/abcd_backup_${DATE}.tar
chmod 755 ${BACKUP_DIR}/abcd_backup_${DATE}.tar
rm -Rf ${BACKUP_DIR}/abcd_backup_${PREV_DATE}.tar

(앗 줄바꿈이 이상하게 보이네요 ㅜㅜ)
물론 MySQL 사용자이름, 비번, 디비이름은 자기 사정에 맞게 넣으셔야 하고
서버 버전에 따라 mysqldump가 /usr/bin/에 있지 않은 경우도 있습니다. 각자 그건 맞춰서 하시고..
tar 압축에서 exclude 옵션은 쓸데 없는 세션은 제외하고, 혹시 여기저기 tar파일이 있다면 제외시키는 옵션입니다. 서버 복구나 이전에 그닥 필요 없으니까..
5일이 지난 파일은 하루에 한번씩 삭제해주기 때문에 5일치만 쌓이게 됩니다. (안 그러면 파일이 너무 많이 쌓이겠죠)

설정을 모두 마쳤다면, mod를 실행가능한 755로 바꿔주고, ${BACKUP_DIR} 이라고 지정한 폴더를 만들어주면 작업 끝!

# chmod 755 backup
# mkdir /etc/home/backup


혹시 문제가 발생한다면!
1. root 권한으로 이 작업을 했나요?
2. # sh /etc/cron.daily/backup 이라고 테스트로 실행시켜서 own이나 mod 오류는 없는지, 경로가 잘못된 건 없는지 확인해보세요
 
 
[이 게시물은 최고관리자님에 의해 2021-10-19 15:24:18 notebook에서 이동 됨]

댓글목록



등록된 댓글이 없습니다.

댓글쓰기

내용
자동등록방지 숫자를 순서대로 입력하세요.
Total 78 / 2 page
검색 열기 닫기
게시물 검색

우툰투 자료실 목록