프로덕션 환경에서 Linux 서버에 어떤 백업 솔루션을 사용합니까? 오픈 소스 또는 상업용 제품을 선호하십니까?
백업 소프트웨어에서 필수 기능으로 간주하는 것은 무엇입니까?
어떤 제품을 권장하지 않습니까? 백업 소프트웨어 선택에 일반적인 함정이 있습니까?
프로덕션 환경에서 Linux 서버에 어떤 백업 솔루션을 사용합니까? 오픈 소스 또는 상업용 제품을 선호하십니까?
백업 소프트웨어에서 필수 기능으로 간주하는 것은 무엇입니까?
어떤 제품을 권장하지 않습니까? 백업 소프트웨어 선택에 일반적인 함정이 있습니까?
답변:
나는 openSource bacula를 사용합니다 . Windows 또는 Linux에서 작동하는 서버 / 클라이언트 모델이 뛰어납니다. 훌륭한 온라인 지원과 활발한 개발자 커뮤니티가 있습니다.
약간 까다 롭지 만 원하는 모든 기능을 갖추고 있습니다.
bweb 이라는 멋진 웹 GUI 가 있으며 일상적인 작업에 사용할 수 있습니다.
필수 기능에 이르기까지 작업에 적합한 도구를 사용해야합니다.
데이터 세트가 작고 단일 볼륨에 맞는 경우 rsnapshot 또는 rdiff-backup을 사용하십시오. 둘 다 증분 백업을 제공하고 공간 효율성이 뛰어나며 사용하기 쉽습니다.
오프라인 구성 요소가있는 더 크거나 더 복잡한 백업의 경우 Bacula를 사용하는데 제대로 설정하는 데 시간이 걸리지 만 견고하고 기능이 거의 없습니다. webacula와 같은 웹 인터페이스와 연결하는 것이 좋습니다.
한 가지 좋은 아이디어 btw, rdiff-backup을 사용하여 / var / backups /에 / etc의 일일 증분 백업을 유지하는 모든 서버에 대해 비용이 들지 않으며 알아낼 수 없으면 많은 두통을 피할 수 있습니다. 구성 파일의 마지막 변경으로 인해 많은 혼란이 발생하는 이유는 무엇입니까?
나는 콜로에서 집까지, 그리고 홈 박스에서 착탈식 USB 드라이브에 이르기까지 네트워크를 통해 직장에서 책상에 보관하는 것과 호환되는 rsync를 사용합니다. 스크립트는 다음과 같습니다.
#!/bin/sh
STARTTIME=$(date +%s)
HOUR=$(date +%H)
DOW=$(date +%a)
WEEKNUM=$(($(date +%W|sed 's/^0\?//') % 4))
LOG=/tmp/last_hour.log
echo "" > $LOG
for DEST in /media/usb[0-9] ; do
if [ -d $DEST/allhats2 ] ; then
echo backing up to $DEST >> $LOG
YESTERDAY=`cat $DEST/yesterday`
LASTHOUR=`cat $DEST/last_hour`
PREV=$DEST/allhats2/hour$LASTHOUR
if [ ! -d $PREV ] ; then
echo could not find a directory at $PREV >> $LOG
PREV=$DEST/allhats2/$YESTERDAY
if [ ! -d $PREV ] ; then
echo could not find a directory at $PREV >> $LOG
PREV=$DEST/allhats2/Sat/
fi
fi
if [ $HOUR = "00" ] ; then
if [ $DOW = "Mon" ] ; then
echo moving last monday to week$WEEKNUM
rm -rf $DEST/allhats2/week$WEEKNUM
mv $DEST/allhats2/Mon $DEST/allhats2/week$WEEKNUM
fi
echo moving last midnight to $YESTERDAY
rm -rf $DEST/allhats2/$YESTERDAY
mv $DEST/allhats2/hour$HOUR $DEST/allhats2/$YESTERDAY
echo $DOW > $DEST/yesterday
fi
echo about to backup allhats2 to hour $HOUR >> $LOG
rm -rf $DEST/allhats2/hour$HOUR/
rsync -aSuvrx --delete / /boot /home /usr /var /backup_2/dbs --link-dest=$PREV/ $DEST/allhats2/hour$HOUR/ >> $LOG
echo $HOUR > $DEST/last_hour
fi
done
YESTERDAY=`cat /root/yesterday`
if [ $HOUR = "01" ] ; then
# Backup xen1
echo about to backup xen1 to /1u_backup/xen1/$DOW/
rm -rf /1u_backup/xen1/$DOW/
rsync -aSuvrx --delete -e ssh --exclude /var/spool/news/ root@xen1:/ --link-dest=/1u_backup/xen1/$YESTERDAY/ /1u_backup/xen1/$DOW/
for DEST in /media/usb[0-9] ; do
if [ -d $DEST/xen1 ] ; then
echo "backing up the backup"
rm -rf $DEST/xen1/$DOW/
rsync -aSuvrx --delete /1u_backup/xen1/$DOW/ --link-dest=$DEST/xen1/$YESTERDAY/ $DEST/xen1/$DOW/
fi
done
# Backup xen
echo about to backup xen to /1u_backup/xen/$DOW/
rm -rf /1u_backup/xen/$DOW/
rsync -aSuvrx --delete -e ssh root@xen:/ --link-dest=/1u_backup/xen/$YESTERDAY/ /1u_backup/xen/$DOW/
for DEST in /media/usb[0-9] ; do
if [ -d $DEST/xen ] ; then
echo "backing up the backup"
rm -rf $DEST/xen/$DOW/
rsync -aSuvrx --delete /1u_backup/xen/$DOW/ --link-dest=$DEST/xen/$YESTERDAY/ $DEST/xen/$DOW/
fi
done
echo done
echo $DOW > /root/yesterday
fi
rsync
합니다.
Rackspace 클라우드 파일 스토리지와 함께 정글 디스크를 사용합니다. 매일 밤 가서 그 일을하고 백업 할 내용을 알려주고 수정 사항을 유지합니다. 오프 사이트이며 상당히 저렴합니다.
무료 RALUS * NIX 에이전트 가있는 BackupExec . 쉽게 내보내고 SAMBA를 요구하지 않으며 에이전트가 백업 한 Windows 서버와도 호환됩니다.
테이프, 오프 사이트 또는 소위 가 아닌 디스크 기반 시스템을 찾고 있다면 BackupPC를 참조하십시오 . 우리는 그것에 대한 좋은 경험을 가지고 있습니다. 디스크 공간을 잘 활용하기 위해 파일을 풀링하는 작업을 잘하는 것처럼 보이며 매우 구성 가능하며 견고합니다.
나는 현재 우리 가게에서 Bacula를 사용하고 있다고 제안합니다. 필요한 경우 Windows에서 작동합니다. :)
또 다른 제안은 Amanda 일 수도 있지만, 두 가지가 종종 서로 비교 되기는하지만 결코 사용하지는 않았습니다.
Bacula는 다양한 종류의 컴퓨터 네트워크에서 컴퓨터 데이터의 백업, 복구 및 확인을 관리 할 수있는 컴퓨터 프로그램 세트입니다. 기술적 인 측면에서 이는 네트워크 클라이언트 / 서버 기반 백업 프로그램입니다. Bacula는 비교적 사용하기 쉽고 효율적이며 손실되거나 손상된 파일을 쉽게 찾고 복구 할 수있는 여러 가지 고급 스토리지 관리 기능을 제공합니다. 모듈 식 설계로 인해 Bacula는 소형 단일 컴퓨터 시스템에서 대규모 네트워크를 통해 수백 대의 컴퓨터로 구성된 시스템으로 확장 할 수 있습니다.
나는 backupninja 래퍼 bash 스크립트의 사용자입니다 . 데비안에서는 표준 리포지토리의 패키지로 제공됩니다.
데이터 유형에 따라 Andrew Cholakian이 언급 한 직접 rdiff-backup을 사용 하거나 먼저 tinkertim이 언급 한 LVM 볼륨의 스냅 샷을 생성 한 다음 rdiff-backup을 실행합니다.
rdiff-backup은 잘못된 네트워크 링크에서 매우 효율적으로 작동하지 않습니다.이 경우 로컬에서 rdiff-backup을 실행 한 다음 rsync를 사용하여 백업 저장소를 원격 서버와 동기화합니다.
어디에서 백업하고 싶습니까? rsync는 다른 리눅스 서버에 백업하고 싶을 때 디렉토리 사본을 동기화 상태로 유지하는 데 매우 유용한 도구가 될 수 있습니다. 이전 백업을 소싱하여 시간 기반 백업을 유지할 수 있습니다. 기본적으로 매번 전체 백업을 받고 있지만 변경된 파일 만 가져옵니다. 다음은 rsync를 사용할 bash 스크립트의 예입니다. 주석을 읽는 것을 잊지 마십시오.
#!/bin/bash
# If you want to automate this script you will need to generate public/private
# key pairs for the user executing this script on the remote server.
# Change these variable to reflect where you want the backups to be stored
# and what servers will get backed up. Servers are seperated by spaces, do
# not use commas.
BACKUPLOCATION='/backups'
SERVERS=( testserver.example.com )
RSYNC='/usr/bin/rsync'
# These are variables used internally to the script DO NOT CHANGE!
TODAYSDATE=`date +%Y-%m-%d-%H`
FOLDERNAME='Backup-'$TODAYSDATE
CURRENTBACKUP='CurrentBackup'
USELINK=0
backup() {
# Test and make sure that the folder we are backing up to is writable
if [ -w $BACKUPLOCATION ]; then
# The folder we are backing up to is writable no problems
echo The backup destination is writable, continuing.
else
mkdir -p $BACKUPLOCATION
if [ $? -eq 0 ]; then
echo "Backup directory '$BACKUPLOCATION' was created"
else
# We can't write to the folder alert the user and stop the backup
echo The backup destination is not writable! Backup Failed!
exit 1
fi
fi
# If there are older backups then use them as a source directory
if [ -h "$BACKUPLOCATION/$CURRENTBACKUP" ]; then
echo
echo "Previous backup found... Will link to unchanged files..."
LASTBACKUP=`ls -l $BACKUPLOCATION | grep $CURRENTBACKUP | awk '{ print $11 }'`
echo $LASTBACKUP
echo "Deleting Old Link..."
rm -f $BACKUPLOCATION/$CURRENTBACKUP
USELINK=1
fi
for SERVER in ${SERVERS[@]}
do
echo
THISRUNLOC=$BACKUPLOCATION/$FOLDERNAME/$SERVER
mkdir -p $THISRUNLOC
if [ $USELINK -eq 1 ]; then
OPT="-a --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp --delete --link-dest=$LASTBACKUP/$SERVER $SERVER:/ $THISRUNLOC"
else
OPT="-a --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp $SERVER:/ $THISRUNLOC"
fi
#echo "Performing: rsync $OPT"
echo "Backing up server: $SERVER"
$RSYNC $OPT
if [ $? -eq 0 ]; then
echo "Success!"
else
echo "Backup failed with an error code of $?"
fi
echo
done
echo "Creating New Link..."
ln -s $BACKUPLOCATION/$FOLDERNAME $BACKUPLOCATION/$CURRENTBACKUP
echo "Backup Complete!"
}
restore() {
# I didn't write the restore code you can simply copy the files back
}
case $1 in
backup)
echo "Running the backup..."
backup
;;
restore)
echo "Restoring backup..."
restore
;;
*)
echo "Run this command with either backup or restore"
;;
esac