6

Я должен написать сценарий для дифференциального резервного копирования (из каталога). Дифференциальное резервное копирование:

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

Предположим для примера:

Понедельник - Выполнено полное резервное копирование и сохранение набора файлов.

Четверг - Хотите выполнить дифференциальное резервное копирование, используя тот же набор файлов. Все файлы, которые изменились с момента полного резервного копирования, сохраняются в дифференциальной резервной копии.

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

4 ответа4

7

Не совсем то, что вы просили, но по сути очень похоже (т.е. вы "платите" хранилище только за файлы, которые действительно изменились):

Использование rsync, создание жестких ссылок для неизмененных файлов.

Большим преимуществом является то, что каждый "снимок" является полноценной резервной копией сам по себе, т. Е. При восстановлении вам нужно только восстановить этот один снимок (вместо восстановления базы и ее приращений).

Хорошая документация по этому подходу доступна по адресу www.mikerubel.org/computers/rsync_snapshots/

1

man dump

 -level#
              The dump level (any integer). A level 0, full backup, guarantees
              the  entire  file  system  is copied (but see also the -h option
              below). A level number above 0, incremental backup,  tells  dump
              to copy all files new or modified since the last dump of a lower
              level. The default level is 0. Historically only levels 0  to  9
              were  usable  in  dump,  this  version is able to understand any
              integer as a dump level.

Стоит прочитать о схеме инкрементного резервного копирования "Ханойская башня" и понять, почему и как она используется.

Смотрите также http://surf.ml.seikei.ac.jp/~nakano/dump-restore/dump-restore-mini-HOWTO.en.html#ss3.3

И http://en.wikipedia.org/wiki/Incremental_backup, который говорит

Пример Unix будет:

rsync -e ssh -va --link-dest=$dst/hourly.1 $remoteserver:$remotepath $dst/hourly.0

Использование опции rsync --link-dest делает эту команду примером инкрементного резервного копирования.

1

Duplicity создает резервные копии [up] каталогов, создавая зашифрованные тома в формате tar и загружая их на удаленный или локальный файловый сервер. Поскольку duplicity использует librsync, инкрементные архивы занимают мало места и записывают только те части файлов, которые изменились с момента последнего резервного копирования. Поскольку duplicity использует GnuPG для шифрования и / или подписи этих архивов, они будут защищены от шпионажа и / или модификации сервером.

http://duplicity.nongnu.org/

Duplicity реализует традиционную схему резервного копирования, в которой исходный архив содержит всю информацию (полное резервное копирование), а в будущем добавляется только измененная информация. Однако вот некоторые преимущества, которые он может иметь по сравнению с другими аналогичными решениями:

  • Простота в использовании: хотя duplicity - это утилита командной строки, семантика относительно проста. Чтобы взять простой пример, эта команда создает резервную копию каталога /usr на удаленном хосте host.net через scp: duplicity duplicity /usr scp://host.net/target_dir

  • Зашифрованные и подписанные архивы. Архивы, создаваемые с помощью двуличия, могут быть зашифрованы и подписаны с использованием GnuPG, стандарта криптологии свободных программ. Удаленное местоположение не сможет сделать вывод о резервных копиях, отличных от их размера и времени их загрузки. Кроме того, если архивы изменены на удаленной стороне, это будет обнаружено при восстановлении.

  • Эффективность использования полосы пропускания и пространства: Duplicity использует алгоритм rsync, поэтому при инкрементном резервном копировании в архив отправляются только измененные части файлов. Например, если длинный файл журнала увеличивается всего на несколько строк текста, небольшая разница будет отправлена и сохранена в архиве. Другие программы резервного копирования могут сохранить полную копию файла.

  • Стандартный формат файла: хотя архивные данные будут зашифрованы, внутри они находятся в стандартном архиве формата GNU-tar. Полная резервная копия содержит обычные архивы, а инкрементные резервные копии представляют собой архивы tar новых файлов и дельты из предыдущих резервных копий. Дельты имеют формат, созданный утилитой командной строки librsync rdiff. Несмотря на то, что вам никогда не придется смотреть на архивы дубликатов вручную, в случае необходимости они могут быть созданы и обработаны с использованием GnuPG, rdiff и tar.

  • Выбор удаленного протокола: Duplicity не предъявляет особых требований к своему архивному серверу. Пока файлы могут быть сохранены, прочитаны, перечислены и удалены из местоположения, это местоположение можно использовать в качестве бэкэнда дублирования. Помимо расширения выбора для пользователя, он может сделать сервер более безопасным, поскольку клиентам требуется только минимальный доступ.

В настоящее время поддерживаются локальные хранилища файлов, scp/ssh, ftp, rsync, HSI, WebDAV, Tahoe-LAFS и Amazon S3, и другие не должны быть сложными для добавления.

0

Нет необходимости писать скрипт, когда существуют инструменты, которые делают это.

СВН, ГИТ

Вы можете настроить SVN и зафиксировать свой каталог. Каждый раз, когда вы совершаете, вы сохраняете разницу. Save = Backup в этом случае.

Вы можете вернуться назад во времени и восстановить снимки предыдущих коммитов.

Это решение подробно обсуждается здесь

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