E D R S I H C RSS

설명 #

  • 로컬 백업 후 리모트 백업하는 스크립트.
  • 타겟디렉토리로 이동
  • tarball 생성
  • 압축/저장
  • 원격사이드의 지정디렉토리로 scp : scp 하기 위해서 passphase가 없도록 ssh 설정해야함

코드 #


0.1 #

#!/bin/sh
BackupName=JongYeobWiki
TODAY=`date "+%Y%m%d"`
BackupSource=/home/hanbyeol/public_html/wiki
BackupTargetDir=/home2/backup/wiki
BackupTargetFile=$BackupName-$TODAY.tar.bz2
BackupTargetRemoteDir="hanbyeol@ftp.os2forum.com:backup/JongYeobWiki"

# wiki
cd $BackupTargetDir
echo $PWD
echo "Backing up $BackupSource and Saving $BackupTargetFile"
tar jcf $BackupTargetFile $BackupSource
chown hanbyeol $BackupTargetFile
chmod 400 $BackupTargetFile
echo "Backing up at $BackupTargetRemoteDir"
scp $BackupTargetFile $BackupTargetRemoteDir
echo "Done."

종협아 소스 좀 쌈빡하게 고칠 수 없나?
전 손에 익은걸로 ^^ -- insel
#!python
#!/use/bin/env python

import time
import os

backupDir = "works/"
filename = "works%04d%02d%02d.tar.bz2" % time.localtime(time.time())[0:3]

os.system("tar cvjf %s %s" % (filename, backupDir) )
os.system("ncftpput -f os2forum_login.cfg backup %s" % filename)

print "done"
대신 ncftp용 접속화일(여기에서는 os2forum_login.cfg)을 하나 만드는 수고가..
오호호호. 이 놈 조금 고치면 되겠네. 으흐흐 -- JongYeob

/home backup script #

#!/bin/sh
# /home full and incremental backup script
# Based on a script by Daniel O'Callaghan <danny@freebsd.org>
# and modified by Gerhard Mourani <gmourani@videotron.ca>
# and modified by Sheen, JongYeob <sheen@jongyeob.com>
# create 2003-03-16

BackupName=home
Dirs=/home
BackupDir=/home2/backup/home
EXCLUDE_DIRS=" \
        --exclude=/home/ftp\
        --exclude=/home/mysql \
        --exclude=*/lost+found \
        --exclude=*/__zbSessionTMP \
        --exclude=/home/hanbyeol/public_html/pub/gentoo_packages"
EXCLUDE_FILES="\
        --exclude=*.core \
        --exclude=software \
        --exclude=*.[aA][vV][iI] \
        --exclude=*.[aA][sS][fFxX] \
        --exclude=*.[mM][pP][3gG] \
        --exclude=*.[wW][mM][aAvV]"
BackupRemoteDir="hanbyeol@ftp.os2forum.com:backup/home"

CHMOD=/bin/chmod
CHOWN=/bin/chown
SCP=/usr/local/bin/scp
TAR=/usr/bin/tar

TODAY=`date "+%Y%m%d"`
WEEK=`date +%w`         # Week : 0 sun - 6 sat
DAY=`date +%d`          # day : 01-31
MONTH=`date +%m`        # month : 01~12

# Monthly full backup
if [ $DAY = "1" ]; then
        echo -n "Monthly full backup"
        NEWER=""
        BackupFile=$BackupName-$TODAY.tar
fi

# Weekly full backup
if [ $WEEK = "01" ]; then
        echo -n "Weekly full backup"
        NEWER=""
        BackupFile="$BackupName-week$WEEK.tar"

        # Update full backup date
        date +%Y%m%d > $BackupDir/fullbackup_date

# Make incremental backup - overwrite last weeks
else
        echo -n "Incremental backup"
        # Get date of last full backup
        NEWER="--newer `cat $BackupDir/fullbackup_date`"
        BackupFile=$BackupName-week$WEEK.tar
fi

# Make backup file
$TAR $NEWER -pP -cvf $BackupDir/$BackupFile $Dirs $EXCLUDE_DIRS $EXCLUDE_FILES \
&& echo -n "Made backup file : $BackupFile"
echo "$TAR $NEWER -jpP -cvf $BackupDir/$BackupFile $Dirs $EXCLUDE_DIRS $EXCLUDE_FILES"

# Make remote backup
#$SCP $BackupFile $BackupRemoteDir \
#&& echo -n "Made remote backup : $BackupRemoteDir"

0.2 #

  • backup.sh 와 template 분리
  • TimerScript 적용 : shell을 /usr/local/bin/bash로 사용해야 함.

backup.sh #

#!/usr/local/bin/bash
# full and incremental backup script
# Based on a script by Daniel O'Callaghan <danny@freebsd.org>
# and modified by Gerhard Mourani <gmourani@videotron.ca>
# and modified by Sheen, JongYeob <sheen@jongyeob.com>
# create 2003-04-01


# template file input example
# BackupName=wiki_jongyeob
# Dirs=/home/hanbyeol/public_html/wiki
# BackupDir=/home2/backup/wiki_jongyeob
# RemoteBackup=yes      # yes or no
# BackupRemoteDir="hanbyeol@ftp.os2forum.com:backup/wiki_jongyeob"
# ExcludeOption=""
# CompressOption="-j"
# EXT=tar.bz2

# export BackupName Dirs BackupDir RemoteBackup BackupRemoteDir 
# export ExcludeOption CompressOption EXT

CHMOD=/bin/chmod
CHOWN=/bin/chown
SCP=/usr/local/bin/scp
TAR=/usr/bin/tar

TODAY=`date "+%Y%m%d"`
WEEK=`date +%w`         # Week : 0 sun - 6 sat
DAY=`date +%d`          # day : 01-31
MONTH=`date +%m`        # month : 01~12

# making backup function
backup() {
        echo -n "  backup file : $BackupFile "
        $TAR $NEWER -pP $CompressOption -cvf \
                $BackupDir/$BackupFile $Dirs $ExcludeOption > /dev/null \
                && echo "(OK)" || echo "(failure!)"
        # make remote backup function
        if [ $RemoteBackup = "yes" ] ; then
                echo -n "  remote backup : $BackupRemoteDir "
                $SCP $BackupDir/$BackupFile $BackupRemoteDir > /dev/null  \
                        && echo "(OK)" || echo "(failure!)"
        fi
}

# start timer
export BEGIN=$SECONDS

echo "############################################"
echo "# Backup : $BackupName  $TODAY"
echo "############################################"
echo ""

# Monthly full backup
if [ $DAY = "01" ]; then
        echo "# Monthly full backup"
        NEWER=""
        BackupFile=$BackupName-$TODAY.$EXT
        backup
        echo ""
fi

# Weekly full backup
if [ $WEEK = "0" ]; then
        echo "# Weekly full backup"
        NEWER=""
        BackupFile=$BackupName-week$WEEK.$EXT

        # Update full backup date
        date +%Y%m%d > $BackupDir/fullbackup_date
        backup
        echo ""

# Make incremental backup - overwrite last weeks
else
        echo "# Incremental backup"

        # Get date of last full backup
        if [ -f $BackupDir/fullbackup_date ] ; then
                NEWER="--newer `cat $BackupDir/fullbackup_date` "
        else
                NEWER="--newer `date +%Y%m%d`"
        fi
        BackupFile=$BackupName-week$WEEK.$EXT
        backup
        echo ""
fi

# stop timer & print elapsed time
export END=$SECONDS
echo "Elapsed time: `timer` "

template (ex. home.bt) #

#!/usr/local/bin/bash
# backup data file

BackupName=home
Dirs=/home
BackupDir=/home2/backup/home
RemoteBackup=no
BackupRemoteDir="hanbyeol@ftp.os2forum.com:backup/wiki_jongyeob"
ExcludeOption=" \
        --exclude=/home/ftp \
        --exclude=/home/mysql \
        --exclude=*/lost+found \
        --exclude=*/__zbSessionTMP \
        --exclude=/home/hanbyeol/public_html/pub/gentoo_packages \
        --exclude=*.core \
        --exclude=software \
        --exclude=*.[aA][vV][iI] \
        --exclude=*.[aA][sS][fFxX] \
        --exclude=*.[mM][pP][3gG] \
        --exclude=*.[mM][pP][eE][gG] \
        --exclude=*.[wW][mM][aAvV] \
        "
CompressOption=""     # -j or -z
EXT=tar               # tar, tar,gz or tar.bz2

export BackupName Dirs BackupDir RemoteBackup BackupRemoteDir ExcludeOption Comp
ressOption EXT

# run backup action
/home2/backup/script/backup.sh




powered by MoniWiki Powered by FreeBSD DNS Powered by DNSEver.com
last modified 2006-08-15 01:41:32
Processing time 0.0397 sec