LINUX.ORG.RU

История изменений

Исправление vel, (текущая версия) :

Я под кат только сейчас заглянул :) И не лень же тебе было писать...

opendir() - каменный век :)

nwft() - наше все :)

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

Есть три замечательные утили find, tar и rsync. Замечательно в них то, что они стандартные.

«rsync --backup» умеет при синхронизации складывать все измененные файлы в указаный каталог.

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

Как выяснилось, rsync не сохраняет время модификации измененных каталогов и symlink-ов. Но эту проблему легко решает find + tar, который умеет сохранять каталоги без рекурсии

find -type d -o -type l -print0 | tar --no-recursion --null -T - -cf dir.tar

Это делается перед запуском rsync --backup.

Далее пакуем каталог с изменениями и к нему дописываем архив dir.tar, сжимая все это на ходу. tar c ключиком "-i" замечательно распаковывает несколько архивов которые идут в файле друг за другом.

Таким образом, для отката на предыдущее состояние у нас получается 2 файла: список удаляемых объектов и архив. В реальности есть еще один файл - контрольный файл с основными атрибутами всех объектов.

Что еще есть интересного в rsync - это rsync-демон, со своим файлом конфигурации.

В конфигурации модуля есть замечательная опция «early exec» которая запускает скрипт перед тем как начать процесс синхронизации. В моем случае там делается снапшот средствами lvm и его монтирование в каталог из которого происходит синхронизация.

В «post-xfer exec» указан скрипт который размонтирует каталог и удаляет снапшот.

Потребовалось написать простой перловый скрипт который автоматизирует все эти действия и утиль для удаления лишних объектов.

Получился значительно упрощенный вариант rdiff-backup.

Исходная версия vel, :

Я под кат только сейчас заглянул :) И не лень же тебе было писать...

opendir() - каменный век :)

nwft() - наше все :)

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

Есть три замечательные утили find, tar и rsync. Замечательно в них то, что они стандартные.

«rsync --backup» умеет при синхронизации складывать все измененные файлы в указаный каталог.

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

Как выяснилось, rsync не сохраняет время модификации измененных каталогов и symlink-ов. Но эту проблему легко решает find + tar, который умеет сохранять каталоги без рекурсии

find -type d -o -type l -print0 | tar --no-recursion --null -T - -cf dir.tar

Это делается перед запуском rsync --backup.

Далее пакуем каталог с изменениями и к нему дописываем архив dir.tar, сжимая все это на ходу. tar c ключиком "-i" замечательно распаковывает несколько архивов которые идут в файле друг за другом.

Таким образом, для отката на предыдущее состояние у нас получается 2 файла. В реальности есть еще один файл - контрольный файл с основными атрибутами.

Что еще есть интересного в rsync - это rsync-демон, со своим файлом конфигурации.

В конфигурации модуля есть замечательная опция «early exec» которая запускает скрипт перед тем как начать процесс синхронизации. В моем случае там делается снапшот средствами lvm и его монтирование в каталог из которого происходит синхронизация.

В «post-xfer exec» указан скрипт который размонтирует каталог и удаляет снапшот.

Потребовалось написать простой перловый скрипт который автоматизирует все эти действия и утиль для удаления лишних объектов.

Получился значительно упрощенный вариант rdiff-backup.