Бэкап с помошью WinRAR
Дано: Сервер с Win2003 и Samba шарой. 10 пользователей.
Задача: Бэкапить данные. Желательно каждую неделю. Желательно автоматически.
Вот такая задача возникла передо мной. Я решил использовать WinRAR через командную строку ибо привык к линуксу. Проштудировав мануалы по винрару я пришёл к этому:
1 |
rar a -r -u -as -os <архив> <источник> |
Где команда a это создание архива, а ключи:
-r – добавление вложенных файлов и папок
-u – добавление в архив новых файлов и обновление изменённых
-as – удаление из архива файлов, которых нет в источнике
-os – сохранение потоков NTFS (не знаю что делает, но рекомендуется)
был ещё ключ -ow – сохранение информации о правах доступа. В моём случае оказался бесполезен.
Таким образом в архиве получается копия текущих пользовательских папок, и при ежедневном обновлении архивируются только обновлённые файлы. Но появилась проблемка – очень долго делался первоначальных архив, плюс если добавлялась куча видео или фоток, то обновление занимало очень долго. А для ежедневного бэкапа степень сжатия не столь важна, как незагруженный сервер в начале рабочего дня. Плюс я использовал абсолютные пути и хотел бы убрать c:\sharedDocs\ из путей в архиве. И на всякий случай я решил добавить инфу для восстановления Поэтому:
1 |
rar a -r -u -as -os -m2 -ep1 -msrar;zip;7z;jpg;jpeg;mp3;avi;mov;mp4 -rr5p <архив> <источник> |
Где:
-m2 – степень сжатия. Число изменяется от 0 до 5, 5 максимальное, 3 по умолчанию.
-ep1 – исключить общий путь из имён файлов
-ms[тип] – не сжимать следющие расширения. Архивы, фото и видео и так сжаты, поэтому степень их сжатия обычно 1-3%, что в моём случае пустая трата времени. Добавляем без сжатия.
–rr5p – 5% информации для восстановления добавляется после создания архива. По умолчанию 1%.
Этим уже можно было пользоваться, но были некоторые вещи которые я хотел бы исправить.
- Информация для восстановления добавлялась очень долго на архивах в 20-30 Гб.
- Если фотографии не менялись, то постоянно менялись Thumbs.db, которые создавали пользовательские ОС. Если их запретить то пользователям было бы дольше ожидать превьюшек фото в папках. Надо было исключить их из архива
- Хотелось получать лог об ошибках.
Поэтому я ещё раз прочитал документацию и пришёл к этому:
Ежедневно:
1 |
rar a -r -u -as -os -m2 -ep1 -msrar;zip;7z;jpg;jpeg;mp3;avi;mov;mp4 -x*\Thumbs.db -ilogc:\backup\log.txt <архив> <источник> |
Еженедельно:
1 |
rar ch -rr5p <архив> |
Где:
-x – исключение файлов из обработки, для рекурсивного исключения надо использовать *\filename
-ilog – лог ошибок
ch – команда для изменения архива
Таким образом у меня ежедневно сохранялись новые и обновлённые файлы и удалялись удалённые. А раз в неделю к архивам добавлялась информация для восстановления. В дальнейшем я всё это завернул в *.cmd файлы, о которых расскажу позднее.
ЗЫ. rar – консольное приложение, winrar – окошечко. Оконное приложение также принимает все эти ключи. С ним можно испльзовать ключ -ibck – запускаться минимизированным в трей.
ЗЗЫ. Для самых маленьких – в скрипте надо писать:
1 |
"C:\Program Files\WinRAR\rar" a -r -u -as -os -m2 -ep1 -msrar;zip;7z;jpg;jpeg;mp3;avi;mov;mp4 -x*\Thumbs.db -ilogc:\backup\log.txt d:\backup\Фотографии.rar c:\sharedDocs\Фотографии |
Важное условие – нужна ЛИЦЕНЗИЯ!!