У меня есть веб-сервер linux (Ubuntu 12.04), и я хочу создать cronjob для локального создания дифференциальной резервной копии (на той же машине).

Это возможно? Под дифференциалом я имею в виду, что в первый раз он копирует все, а в следующий раз копирует только новые файлы. Но я также хочу иметь много точек во времени, я имею в виду, по крайней мере, 3 или 4 резервных копии, из которых я могу восстановить все.

Я проверил эту страницу, но есть слишком много разных инструментов, и я думаю, у каждого есть свои особенности: https://help.ubuntu.com/community/BackupYourSystem#Types_of_Backup

Например, мне сказали, что хранение .tar.gz имеет ограничение по размеру.

Если у вас есть простое предложение, даже если оно не дифференциальное, это приветствуется.

2 ответа2

1

rsync - отличный инструмент для копирования файлов, он может копировать только биты изменений в файле и может создавать резервные копии файлов назначения перед перезаписью.

Вы можете легко отредактировать ваш crontab чтобы периодически запускать rsync для вашей основной резервной копии. Затем вы можете скопировать резервные копии для измененных файлов, и у вас будет больше временных точек. Или вы можете скопировать резервные копии данных перед запуском rsync чтобы получить полный образ для каждого момента времени.

Если вы не собираетесь позже копировать файлы в другом месте, я не думаю, что нужно использовать tar .

1

Предполагая, что в /media/mydisk есть резервный диск, и я хочу создать резервную копию /home/user , этот небольшой скрипт позволит вам сохранить 10 резервных копий истории, но хранить только разные файлы более одного раза.

Для этого необходимо, чтобы диск для резервного копирования был отформатирован с файловой системой POSIX, такой как Ext4, XFS или еще, но без ntfs или fat!

#!/bin/bash
backRepo=/media/mydisk
backSrce=/home/user
backDest=home
backCopy=copy
backCount=9

[ -d "$backRepo/$backDest" ] || mkdir "$backRepo/$backDest"

cd $backSrce || exit 1
rsync -ax --delete --exclude '*~' --exclude '.DStore' . "$backRepo/$backDest/."

cd $backRepo
[ -d "$backCopy.$backCount" ] && rm -fR "$backCopy.$backCount"
for ((i=$backCount;i--;));do
    [ -d "$backCopy.$i" ] && mv "$backCopy.$i" "$backCopy.$((i+1))"
  done
((i++))

cp -al $backDest $backCopy.$i

Это (cp -al) делает жесткие ссылки на файлы вместо их копирования. Так что больше нет места, используемого.

Rsync заново создаст (скопирует при записи) каждый измененный файл, поэтому при вращении резервная копия сохранит старую версию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .