Как создать локальную резервную копию?

Как создать локальную резервную копию?

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

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

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

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

Если у вас есть какие-либо простые предложения, даже если они не являются чем-то особенным, мы будем рады их услышать.

решение1

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

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

#!/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 будетвоссоздать(копирование при записи) каждый измененный файл, поэтому ротируемая резервная копия сохраняет старую версию.

решение2

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

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

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

Связанный контент