gifts2017

Резервариус администратора: сделай копию и делай, что хочешь!

Опубликовал Владимир Милькин (alexey.karmanov) в раздел Администрирование - Архивирование (backup)

Необходимо менять базу [скрипты, файлы ... неважно] и хочется подстраховаться? Копия нужна прямо сейчас, чтобы не тряслись коленки потом и можно было сделать “rollback”? Резервариус: сделай копию и делай, что хочешь! Универсальная система хранения копий любых файлов и папок. Поможет там, где нет смысла применять полноценную систему контроля версий или систему резервного копирования.

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

Область применения

  • Базы 1С всех версий.
  • Базы сторонних программ (всякие налогоплательщики, пенсионки и прочие).
  • Отдельные dbf файлы.
  • Скрипты, файлы настроек.
  • Любые файлы и папки с данными.
Плюсы
  • Интегрирован в проводник (выбирайте нужные файлы и папки, чтобы отправить их в “Хранилище копий”).
  • Поддерживается "drag and drop" на форму программы.
  • Хранилище можно делать сетевым (при сохранении копии учитывается сетевое имя компьютера).
  • Копии сжимаются замечательным архиватором 7-zip, интегрированным в программу.
  • Перед копированием файлы блокируются на запись, что гарантирует целостность данных.
  • Настраиваются исключения для файлов и папок при копировании.
Зачем
  • Часто в работе возникает необходимость сделать снимок какой-нибудь группы файлов и отложить на полочку, чтобы потом, в случае чего, быстро оттуда достать.
  • Если только это не исходники чего-либо, система контроля версий не подходит.
  • Система резервного копирования тоже остается не удел, так как настраивается обычно для регулярной архивации определенного набора данных.
  • Всегда было желание иметь некий инструмент для работы с такой полочкой. Что-то типа "одноразовой моментальной системы резервного копирования".
  • Так возникла идея Резервариуса. Она была реализована и используется в моей практике вот уже 2 года как дополнение к системам резервного копирования и контроля версий.
Буду рад, если она пригодится кому-нибудь ещё.
 
С уважением, Алексей Карманов (helpme1c.ru)

Скачать файлы

Наименование Файл Версия Размер
Резервариус администратора 1.0 73
.exe 778,02Kb
26.06.13
73
.exe 778,02Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Антон Погорелов (boolean) 26.06.13 09:20
а архиваторы 7zip, WinRAR не справляются с данной задачей?
2. Владимир Милькин (alexey.karmanov) 26.06.13 09:29
(1) boolean,
со сжатием? Отлично справляются, именно поэтому я для сжатия использую любимый архиватор 7-zip, встроенный прямо в программу.

Раньше я так и делал. У меня была специальная папочка на компьютере (называлась, что-то типа "backup (manual)". И вот я каждый раз делал архив такой страховочной копии. Что мне не нравилось в таком подходе: нужно ручками правильно называть архив, прописывать число, указывать куда сохранять.

Помучался я так, а потом взял и написал Резервариус. Один раз настроил в нём папку для хранилища копий. Теперь, чтобы создать копию файлов и папок - я просто выделяю их в проводнике, меню отправить -> хранилище копий. Всё остальное Резервариус делает сам: называет с учетом пути к данным, указывает дату и время, жмет. Удобно получилось.

А потом я ещё и прикрутил, чтобы имя компьютера учитывалось. И сделал на всю локальную сеть на работе одно хранилище. Таким образом копии хранятся в одном месте, а создаваться могут на любом из компьютеров сети.

Подумал, что это не одному мне может быть полезно и выложил сюда.
3. Владимир Милькин (alexey.karmanov) 26.06.13 09:32
(1) boolean,
плюс есть возможность задать исключения. Для баз 7.7 очень полезно: не нужно копировать те же cdx и всякие левые папки.

Ну и возможно самое главное: перед копированием набора файлов - сначала они все блокируются на запись, потом копируются и только потом разблокируются. Если просто жать архиватором - есть вероятность создать разсогласованную копию. Делая копии Резервариусом - можно быть уверенным в их целостности.
4. Андрей Карев (lamelioss) 26.06.13 09:45
а под *nix оно работать будет? =)
5. Владимир Милькин (alexey.karmanov) 26.06.13 09:50
(4) lamelioss,
Нет, к сожалению только Windows системы =))

А ведь действительно на *nix она была бы весьма кстати.
6. Андрей Карев (lamelioss) 26.06.13 10:00
(5) alexey.karmanov, вот вот )) я лет 6 назад писал что то похожее под линуху, напрягали всякие архиваторы ) если найду исходники, поделюсь )
7. Владимир Милькин (alexey.karmanov) 26.06.13 10:02
(6) lamelioss, давай! Буду признателен =)) Было бы здорово сделать Резервариус кроссплатформенным.
8. Андрей Карев (lamelioss) 26.06.13 10:08
(7) alexey.karmanov, окей, старый винт найду, кину ))) или заново напишу на край 8)
9. Владимир (hogik) 26.06.13 18:32
(0) (3)
"перед копированием набора файлов - сначала они все блокируются на запись ... можно быть уверенным в их целостности"(с)
Алексей (alexey.karmanov).
Опишите, пожалуйста, алгоритм блокировки для файловых версий 1С-а.
10. Владимир (hogik) 26.06.13 21:13
(0)
"сначала они все блокируются на запись"(с)
Алексей (alexey.karmanov).
1) Никакая "внешняя" блокировка не может обеспечить согласованную копию, если не учитывается логика блокировок самой СУБД.
2) Блокировка без учета логики блокировок СУБД приводит к подобным явлениям:
http://infostart.ru/public/15577/
http://infostart.ru/public/16158/
P.S. Ставлю "минус" под публикацию, дыбы обратить внимание потенциальных пользователей на мои замечания.
P.P.S. Жду от автора публикации ответа на (9) сообщение, чтобы убрать "минус".
11. Владимир Милькин (alexey.karmanov) 27.06.13 02:19
(10) hogik,
или вы меня не до конца поняли, или я вас :)

Давайте на примере папки с базой какой-нибудь рассмотрим, пусть это будет 1С 7.7, там много файлов:
1) Вы нажимаете на папке с базой или на файлах базы правой кнопкой, отправить -> "Хранилище копий".
2) Резервариус составляет полный список файлов входящих в эту папку и пытается получить эксклюзивный доступ к каждому файлу (не попадающему под маску исключений).
3) Если хотя бы с одним файлом ему это не удается (например, база открыта в 1С Предприятии), то он пишет ошибку и отказывается создавать копию всей папки SSTDB.
4) Если эксклюзивный доступ ко всем файлам получен, то это означает, что они открыты на чтение в режиме разделения, при котором другие приложения могут только читать эти файлы, но не писать. Это значит, что после этого пункта ни 1С, ни какие другие приложения не смогут открыть базу и что-нибудь там менять, а будут писать ошибка эксклюзивного доступа, так как файлы уже заняты Резервариусом. Это я и имел под "блокируются на запись".
5) Все файлы жмутся в копию.
6) Эксклюзивная блокировка снимается.
12. Владимир (hogik) 27.06.13 02:45
(11)
"или вы меня не до конца поняли, или я вас :) "(с)
Алексей (alexey.karmanov).
Оба. :-)
1) Эксклюзивный режим открытия файла и блокировки некого "региона" файла - две большие разницы.
2) Открыть файл в эксклюзивном режиме невозможно, если он уже открыт в любом режиме.
3) Для файла открытого в эксклюзивном режиме понятие блокировка "региона" не имеет смысла.
4) 1С никогда не открывает файлы в разделенном режиме только для чтения.
5) В Win32 блокируется "регион" для "доступа" вообще, а не чтения и/или записи.
Дык, чего и как Вы открываете и блокируете?
13. Владимир Милькин (alexey.karmanov) 27.06.13 02:53
(12) hogik,
1) я отрываю на чтение с эксклюзивным доступом весь файл, а не регион этого файла.
2) правильно, если он отрыт уже другой программой, у меня не получится получить эксклюзивный доступ к файлу и Резервариус напишет ошибку, что мол "возможно файлы заняты другой программой".
3) я и не говорил нигде ничего про блокировку "региона".
4) 1С не открывает, я открываю.

Приведу конструкцию на c#, в MSDN лень лезть сейчас искать
Stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
поток отрыт до конца копирования.

Попробуйте сами, откройте базу в 1С и у вас не получится её скопировать Резервариусом.
Теперь запустите копирование закрытой базы Резервариусом и у вас не получится её ничем больше открыть, пока Резервариус не закончит свою работу.
14. Владимир Милькин (alexey.karmanov) 27.06.13 02:58
(12) hogik,
Я ещё раз хочу подчеркнуть, что Резервариус не ставит перед собой цель скопировать базу, которая УЖЕ открыта и обеспечить согласованность копии. Это действительно невозможно, поэтому в этом случае он и пишет ошибку.
Он будет копировать, только если база закрыта. И если он начнет копирование, то открыть базу в процессе этого не получится.
15. Владимир (hogik) 27.06.13 03:09
(13)
Алексей (alexey.karmanov).
"я отрываю на чтение с эксклюзивным доступом весь файл, а не регион этого файла"(с)
А где я написал про открытие региона? Вы чо? ;-)
"я и не говорил нигде ничего про блокировку "региона". "(с)
Верно. Не говорили. Но, вы говорили про блокировку. А блокировка выполняется только для понятия "регион": "The LockFile function locks a region in an open file. Locking a region prevents other processes from accessing the region."
"Попробуйте сами, откройте базу в 1С и у вас не получится её скопировать Резервариусом.
Теперь запустите копирование закрытой базы Резервариусом и у вас не получится её ничем больше открыть, пока Резервариус не закончит свою работу. "(с)

Вот, думаю, ключевая Ваша фраза. ;-) Т.е. Ваша программа работает только, если в систем нет пользователей. Так? Тогда зачем говорить о блокировках файлов. Всё у Вас проще. Удалось открыть ВСЕ файлы в эксклюзивном режиме - копируем. Не удалось - не копируем.
16. Владимир Милькин (alexey.karmanov) 27.06.13 03:16
(15) hogik,
Вот, думаю, ключевая Ваша фраза. ;-) Т.е. Ваша программа работает только, если в систем нет пользователей. Так? Тогда зачем говорить о блокировках файлов. Всё у Вас проще. Удалось открыть ВСЕ файлы в эксклюзивном режиме - копируем. Не удалось - не копируем.


Ну конечно же! Я, посмотрев список ваших работ, так и понял, что вас ввело в заблуждение слово блокируется на запись. Я имел в виду эксклюзивный доступ к файлу, а вовсе не LockFile.

Именно так и работает Резервариус: "Удалось открыть ВСЕ файлы в эксклюзивном режиме - копируем. Не удалось - не копируем.". Что и обеспечивает согласованность копии в конечном итоге.
17. Владимир Милькин (alexey.karmanov) 27.06.13 03:18
(15) hogik, в следующей версии в описании исправлю слово "блокировка" на "эксклюзивный доступ", чтобы не вводить в заблуждение специалистов :)
18. Владимир (hogik) 27.06.13 03:19
(14)
Алексей (alexey.karmanov).
Вот Ваша фраза, которая путает:
"перед копированием набора файлов - сначала они все блокируются на запись, потом копируются и только потом разблокируются."(с)
Т.е. файлы не блокируются, не блокируются на запись, не разблокируются.
Они, просто, открываются в эксклюзивном режиме. :-) Но, открываются ВСЕ, если удалось ВСЕ открыть. И только тогда делается копия.
Минус, конечно, снимаю под публикацией. Но, написать об эксклюзивном выполнении копирования, думаю, имеет смысл.
alexey.karmanov; +1 Ответить
19. Владимир Милькин (alexey.karmanov) 27.06.13 03:22
(15) hogik, и справедливости ради речь с моей стороны была фраза "блокируется на запись", а не "блокировка" :)
Потому, что не программисту эта фраза более понятна, чем "эксклюзивный доступ". Понял вас, распишу подробнее.
20. Владимир (hogik) 27.06.13 03:25
(16)
"Что и обеспечивает согласованность копии в конечном итоге."(с)
Алексей (alexey.karmanov).
И вот этим не надо путать людей. :-) Т.к. если нет активных сессий, то получить НЕсогласованную копию не получится. А жаль... :-)
21. Программулькин (Программулькин) 27.06.13 03:26
Плюсую. За что? Всё просто. Мне тоже лень делать рутину, а тут автоматизация рутинной нудной работы (пусть кратковременной, но если подсчитать сколько я таких "горячих копий" делаю, то времени уходит много). Лень двигатель прогресса. Имхо, настоящий Айтишник должен быть ленивым, иначе он не Айтишник. Мы всё делаем для юзеров,а тут для нас. Короче, лови плюс.
alexey.karmanov; +1 Ответить
22. Владимир (hogik) 27.06.13 03:27
(19)
"блокируется на запись"
Алексей (alexey.karmanov).
Нет такого понятия!!!
23. Владимир Милькин (alexey.karmanov) 27.06.13 03:28
(20) hogik,
эту фразу я написал, чтобы подчеркнуть отличие копирования Резервариусом и просто скажем архиватором или проводником. Там эксклюзивный доступ к группе копируемых файлов не применяется и поэтому в процессе копирования файлы могут быть открыты субд, изменены и копия получится разсогласованной.

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

То есть, вполне можно сказать, что эксклюзивный доступ обеспечивает согласованность копии.
24. Владимир (hogik) 27.06.13 03:29
(19)
Алексей (alexey.karmanov).
У Вас блокируется "на полный НЕ доступ".
25. Владимир Милькин (alexey.karmanov) 27.06.13 03:32
(22) hogik, обещаю в самое ближайшее время описать всё по понятиям :)) Сейчас какое-нибудь изменение будет в программе и исправлю заодно. Всё же как ни крути, а утилита для айтишников. И описание должно быть грамотным. Спасибо.
26. Евгений Фамилия (internetname) 27.06.13 18:30
Копии это наше все.
alexey.karmanov; +1 Ответить
27. Антон Погорелов (boolean) 28.06.13 23:21
Почитал Вашу жаркую дискуссию.
Ничего нового я так и не увидел, все это можно организовать с помощью VBS или CMD + nncron, но для других думаю будет полезно. Плюс за старание =)
28. ARTEM SEMENKOV (MORT32Ram) 30.04.15 08:03
Спасибо за программу. Было бы замечательно если бы она еще и паролила архивы, указанным в настройках паролем.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа