Какие решения для резервного копирования вы используете для Linux-сервера в производственной среде? Вы предпочитаете продукты с открытым исходным кодом или коммерческие продукты?
Что вы считаете важными в программном обеспечении для резервного копирования?
Какие продукты вы не рекомендуете? Есть ли распространенные ошибки при выборе программного обеспечения для резервного копирования?
Я использую openSource бакула. Отлично - модель сервер / клиент, работающая на windows или linux. Есть хорошая онлайн-поддержка и активное сообщество разработчиков.
Немного сложно настроить, но в нем есть все функции, которые вам могут понадобиться.
Также есть хороший веб-интерфейс под названием паутина которые можно использовать для повседневной эксплуатации.
Что касается основных функций, вам необходимо использовать правильный инструмент для работы.
Если ваш набор данных невелик и умещается на одном томе, используйте rsnapshot или rdiff-backup. Оба предлагают инкрементное резервное копирование, занимают очень мало места и действительно просты в использовании.
Для более крупных или сложных резервных копий с автономным компонентом я использую Bacula, для правильной настройки требуется время, но оно надежно и имеет довольно много функций. Я рекомендую связать его с веб-интерфейсом, например webacula.
Одна хорошая идея, кстати, для каждого сервера, который у меня есть, я использую rdiff-backup для ежедневного инкрементного резервного копирования / etc в / var / backups /, это ничего вам не стоит и избавит вас от многих головных болей, если вы не можете понять почему это последнее изменение в файле конфигурации вызывает столько хаоса.
Я использую rsync как по сети, от моего колокольчика до дома, так и с домашнего ящика на съемный USB-накопитель, который я заменяю на тот, который храню на рабочем столе. Скрипт выглядит примерно так:
#!/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
Я использую jungledisk с облачным файловым хранилищем Rackspace. Он просто идет каждую ночь и делает свое дело, я просто говорю ему, что нужно сделать резервную копию, и он даже сохраняет исправления (вроде). Выездной и довольно недорогой.
я использую backuppc для всех моих хозяев. Только магазин maildir на 500 ГБ был проблематичным, потому что rsync
действительно использовал слишком много оперативной памяти на принимающей стороне. Я переключился на использование tar и базовых инкрементальных меток для этого хоста.
BackupExec, с бесплатным RALUS * NIX агент. Легко экспортирует, не требует SAMBA и подходит для серверов Windows, резервные копии которых также поддерживают агенты.
Если вы ищете систему на основе диска (а не на магнитной ленте, вне офиса или что-то еще), я бы посоветовал взглянуть на BackupPC. У нас есть хороший опыт работы с этим. Кажется, он хорошо справляется с объединением файлов, чтобы эффективно использовать дисковое пространство, он легко настраивается и оказался для нас надежным.
Я бы посоветовал Bacula, я сейчас использую его в нашем магазине. Он также работает с окнами, если вы когда-нибудь обнаружите, что вам это нужно. :)
Другим предложением может быть Аманда, но я никогда не использовал его, хотя их часто сравнивают друг с другом.
Bacula - это набор компьютерных программ, которые позволяют вам (или системному администратору) управлять резервным копированием, восстановлением и проверкой компьютерных данных в сети компьютеров разных типов. С технической точки зрения это сетевая программа резервного копирования на базе клиент / сервер. Bacula относительно проста в использовании и эффективна, предлагая множество расширенных функций управления хранилищем, которые позволяют легко находить и восстанавливать потерянные или поврежденные файлы. Благодаря своей модульной конструкции Bacula масштабируется от небольших одиночных компьютерных систем до систем, состоящих из сотен компьютеров, расположенных в большой сети.
Этот документ очень хорошо и подробно объясняет, как использовать rsync для инкрементного резервного копирования в Linux.
В проприетарном мире R1Soft делает очень хорошую работу. Попробуйте демонстрационные инструменты, которые они выпускают бесплатно.
В свободном мире я использую снимки lvm, dd и netcat для быстрого резервного копирования. Просто убедитесь, что dm_snapshot существует в вашем initrd :)
я счастливый пользователь Backupninja сценарий оболочки bash. он доступен в debian как пакет в стандартном репозитории.
в зависимости от типа данных, которые я использую напрямую rdiff-резервное копирование упомянутый Эндрю Чолакяном, или сначала сделайте снимок тома LVM [упомянутый tinkertim], а затем запустите на нем rdiff-backup.
rdiff-backup не работает очень эффективно через плохие сетевые ссылки, в таких случаях я запускаю rdiff-backup локально, а затем использую rsync для синхронизации репозитория резервных копий с удаленным сервером.
Куда бы вы хотели сделать резервную копию? rsync может быть бесценным инструментом для синхронизации копий каталогов, если вы хотите сделать резервную копию на другом сервере Linux. Вы можете хранить резервные копии на основе времени, используя предыдущую резервную копию. По сути, вы каждый раз получаете полную резервную копию, но она извлекает только те файлы, которые были изменены. Вот пример сценария bash, который будет использовать rsync, не забудьте прочитать комментарии.
#!/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
Что вы считаете важными в программном обеспечении для резервного копирования?
Я не могу поверить, что никто не упомянул Двойственность. Я не могу рекомендовать это достаточно высоко. Он имеет несколько бэкэндов - от FTP до ssh и S3 - и выполняет шифрование (gpg) и инкрементное резервное копирование, а процесс восстановления ужасающе прост.