История изменений
Исправление 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.