Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Использование GIT для резервного копирования файлов вашего веб-сайта в системе linux

Оригинал: Using GIT to backup your website files on linux
Автор: Leo G
Дата публикации: Sep 28 2014
Перевод: Н.Ромоданов
Дата перевода: январь 2015 г.

Ну не совсем Git, а программы на основе Git, известной как BUP. Обычно для резервного копирования файлов я до сих пор использовал rsync, который отлично работал. Единственная проблема или недостаток состоял в том, что вы не могли восстановить файлы на конкретный момент времени. Таким образом, я начал искать альтернативы и нашел BUP — программу на основе git, которая хранит ваши данные в репозиториях и даст вам возможность восстанавливать данные на любой конкретный момент времени.

Когда используется BUP, то вы сначала должны инициализировать пустой репозиторий, затем сделать резервную копию всех ваших файлов. Когда BUP создает резервную копию, он создает точку восстановления, к которой в дальнейшем можно откатиться. Он также создает индекс всех ваших файлов, в этом индексе хранятся атрибуты и контрольные суммы файлов. Когда BUP планирует сделать следующую резервную копию, он сравнивает файлы с их атрибутами и сохраняет данные только в случае, если что-то изменилось. Это позволяет сэкономить много места.

Установка BUP (проверено на Centos 6 и 7)

Убедитесь, что вы установили репозитории RPMFORGE и EPEL.

[techarena51@vps ~]$sudo yum groupinstall "Development Tools"
[techarena51@vps ~]$ sudo yum install python python-devel
[techarena51@vps ~]$ sudo yum install fuse-python pyxattr pylibacl
[techarena51@vps ~]$ sudo yum install perl-Time-HiRes
[techarena51@vps ~]$ git clone git://github.com/bup/bup
[techarena51@vps ~]$cd bup
[techarena51@vps ~]$ make
[techarena51@vps ~]$ make test
[techarena51@vps ~]$sudo make install 

Пользователи последних версий debian/ubuntu могут выполнить команду "apt-get build-dep bup"; дополнительную информацию смотрите по ссылке https://github.com/bup/bup.

В CentOS 7 на шаге "make test" у вас могут возникнуть ошибки, но вы можете продолжить и запустить make install.

Первым шагом, как и в git, является инициализация пустого репозитория.

[techarena51@vps ~]$bup init

По умолчанию, bup будет хранить свой репозиторий в каталоге "~/.bup", но вы можете изменить это, установив переменную среду окружения "export BUP_DIR=/mnt/user/bup".

Далее вы создаете индекс всех файлов. В индексе, как я упоминал ранее, хранится список файлов, их атрибутов, а также идентификаторы их Git-объектов (хеши sha1). В атрибутах присутствуют мягкие ссылки, права доступа, а также бит неизменности.

bup index /path/to/file
bup save -n nameofbackup /path/to/file

#Example
[techarena51@vps ~]$ bup index /var/www/html
Indexing: 7973, done (4398 paths/s).
bup: merging indexes (7980/7980), done.

[techarena51@vps ~]$ bup save -n techarena51 /var/www/html

Reading index: 28, done.
Saving: 100.00% (4/4k, 28/28 files), done.
bloom: adding 1 file (7 objects).
Receiving index from server: 1268/1268, done.
bloom: adding 1 file (7 objects).

Команда "BUP save" будет делить все содержимое файла на кусочки и хранить их как отдельные объекты. С помощью параметра "-n" задается имя резервной копии.

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

[techarena51@vps ~]$ bup ls
local-etc    techarena51  test
#Check for a list of backups available for my site
[techarena51@vps ~]$ bup ls techarena51
2014-09-24-064416  2014-09-24-071814  latest
#Check for the files available in these backups
[techarena51@vps ~]$ bup ls techarena51/2014-09-24-064416/var/www/html
apc.php                      techarena51.com              wp-config-sample.php         wp-load.php 

Резервное копирование файлов на том же самом сервере — это всегда плохое решение. BUP позволяет делать резервные копии файлов вашего веб-сайта на другом сервере, однако вы должны сделать так, чтобы на удаленном сервере были установлены ваши ключи SSH и BUP.

bup index path/to/dir
bup save-r remote-vps.com -n backupname path/to/dir

Пример: Резервное копирование каталога "/var/www/html"

[techarena51@vps ~]$bup index /var/www/html
[techarena51@vps ~]$ bup save -r user@remotelinuxvps.com: -n techarena51 /var/www/html
Reading index: 28, done.
Saving: 100.00% (4/4k, 28/28 files), done.
bloom: adding 1 file (7 objects).
Receiving index from server: 1268/1268, done.
bloom: adding 1 file (7 objects).

Восстановление резервной копии

Войдите на удаленный сервер и введите следующую команду

[techarena51@vps ~]$bup restore -C ./backup techarena51/latest

#Restore an older version of the entire working dir elsewhere
[techarena51@vps ~]$bup restore -C /tmp/bup-out /testrepo/2013-09-29-195827
#Restore one individual file from an old backup
[techarena51@vps ~]$bup restore -C /tmp/bup-out /testrepo/2013-09-29-201328/root/testbup/binfile1.bin

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

Просмотрите ваши резервные копии с помощью встроенного веб-сервера

bup web
#specific port
bup web :8181

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

#!/bin/bash

bup index /var/www/html 
bup save -r user@remote-vps.com: -n techarena51 /var/www/html

BUP, возможно, не самое совершенное средство, но выполняет эту работу очень хорошо. Я определенно хотел бы видеть дальнейшее развитие этого проекта, и, надеюсь, что также будет сделано дистанционное восстановление из резервной копии.

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

Для синхронизации файлов в режиме реального времени вы также можете воспользоваться приложением inotify-tools.