Библиотека сайта 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.