Ubuntu, потому что это легко и просто.
Хинду, потому что это - sooo много забавы.
Стандарт rsync пропускает эту функцию, но существует патч для него в rsync-патчах tarball (копия-devices.diff), которая может быть загружена с http://rsync.samba.org/ftp/rsync/ После appling и перекомпиляция, Вы можете rsync устройства с - опция устройств копии.
Смотрите на Проект устройства хранения данных Linux Zumastor, он реализует резервное копирование "снимка" использование двоичного файла "rsync" через ddsnap инструмент.
Из страницы справочника:
ddsnap обеспечивает репликацию блочного устройства, учитывая средство фиксации мгновенного состояния процесса блочного уровня, способное к содержанию нескольких одновременных снимков эффективно. ddsnap может генерировать список блоков снимка, которые отличаются между двумя снимками, затем отправляют то различие о проводе. На нижестоящем сервере запишите обновленные данные в созданное снимки блочное устройство.
Если бы Вы пытаетесь минимизировать вакуум суммы, Вы отправили бы через провод с плоскостью dd
, Вы не могли просто передать его по каналу к gzip прежде, чем передать его по каналу к ssh?
например, dd, если =/dev/xenVG/SERVER001OS | gzip | ssh administrator@backupserver "dd =/mnt/largeDisk/SERVER001OS.img.gz"
Просто остерегайтесь этого производительность системы, которая имеет снимки LVM, пропорционально количеству снимков.
Хотя существуют патчи 'устройства записи' и 'устройства копии' для RSync, они только работают хорошо над маленькими (1-2GB) изображениями. RSync потратит возрасты, ищущие вокруг соответствие блокам на увеличенных изображениях, и это почти бесполезно из 40 ГБ или более крупных устройств/файлов.
Мы используем следующее, чтобы работать на сравнение контрольной суммы 1 МБ и затем затем скопировать содержание, если оно не соответствует. Мы используем это для серверов резервного копирования на виртуальном хосте в США к системе резервного копирования в Великобритании по общедоступному Интернету. Очень мало хита производительности активности ЦП и снимка только после закрытия:
Создайте снимок:
lvcreate -i 2 -L 25G /dev/vg_kvm/company-exchange -n company-exchange-snap1
export dev1='/dev/mapper/vg_kvm-company--exchange--snap1';
export dev2='/dev/mapper/vg_kvm-company--exchange';
export remote='root@backup.company.co.za';
Начальный отбор:
dd if=$dev1 bs=100M | gzip -c -9 | ssh -i /root/.ssh/rsync_rsa $remote "gzip -dc | dd of=$dev2"
Возрастающее ночное резервное копирование (только отправляет измененные блоки):
ssh -i /root/.ssh/rsync_rsa $remote "
perl -'MDigest::MD5 md5' -ne 'BEGIN{\$/=\1024};print md5(\$_)' $dev2 | lzop -c" |
lzop -dc | perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 | lzop -c |
ssh -i /root/.ssh/rsync_rsa $remote "lzop -dc |
perl -ne 'BEGIN{\$/=\1} if (\$_ eq\"s\") {\$s++} else {if (\$s) {
seek STDOUT,\$s*1024,1; \$s=0}; read ARGV,\$buf,1024; print \$buf}' 1<> $dev2"
Удалите снимок:
lvremove -f company-exchange-snap1
Я построил тестовый сервер, прочитал документацию и начал с пустой страницы.
Следующие модули являются обязательными:
Затем я закомментировал все оставшиеся модули и перезапустил Apache. Он будет звучать, если что-то сломается, например:
Starting httpd: Syntax error on line 10 of /etc/httpd/conf.d/squid.conf:
Invalid command 'order', perhaps misspelled or defined by a module not included in the server configuration
Сделайте то же самое с другими модулями. Используя этот метод, вот некоторые модули, которые часто не необходимы:
Есть скрипт на языке Python, называемый blockync , который представляет собой простой способ синхронизации двух блочных устройств по сети через ssh, только передавая изменения.
- Скопируйте blockync.py в домашний каталог на удаленном хосте.
- Убедитесь, что ваш удаленный пользователь может использовать sudo или сам root.
- Убедитесь, что ваш локальный пользователь (root?) Может читать исходное устройство и ssh для удаленный хост
- Вызов:
python blocksync.py / dev / source user @ remotehost / dev / dest
Я недавно взломал его, чтобы очистить его и изменить на использование той же быстрой контрольной суммы алгоритм как rsync ( Adler-32 ).
В дополнение к ответу Дэвида Херсельмана следующий сценарий будет синхронизироваться с локальным устройством:
perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};print md5($_)' $dev2 |
perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 |
perl -ne 'BEGIN{$/=\1} if ($_ eq"s") {$s++} else {if ($s) {
seek STDOUT,$s*1024,1; $s=0}; read ARGV,$buf,1024; print $buf}' 1<> $dev2
Насколько мне известно, оба сценария были впервые опубликованы по адресу lists.samba.org .