![]() |
Недавно на работе полетел клиент-банк. И выяснилось, что последний бекап важных данных имеет дату от сентября 2013 г. Девица, которая работала на этом компьютере, на вопрос «Почему нет архивов», мило хлопала глазками
В общем, в большинстве случаев известно, что со среднестатистического бухгалтера что-то, кроме анализа, требовать бесполезно. Поэтому сразу придумалось бекапить БД ежедневно, при старте компьютера, и как можно проще. Причем нужно ещё удалять старые архивы, скажем старше 30 дней, чтобы не забить диск. А также не запускать бекап при рестарте компьютера в тот же день. Проще чем бат-файл — ничего не придумать, вот и написал. В процессе написания выяснилось: 1. В Гугле готового решения нет. 2. Бат файлы имеют разные команды для разных версий Windows. Создать паузу под XP оказалось особым геморроем. 3. Для правильного отображения русского языка в бат-файле должна быть установлена кодировка OEM 866. Что конечно же не умеет стандартный блокнот Windows. Пользуйтесь более продвинутыми редакторами, например Notepad++ Кратко — как пользоваться backup_folder.bat
Код: Код:
rem Откуда копируем
Ссылки. Скрытое содержимое доступно для зарегистрированных пользователей! Программа с описанием выложена на Гитхаб: https://github.com/Den1xxx/Backup_folder Прямая ссылка на архив со всеми версиями: https://yadi.sk/d/7jE2wW7ngWxMZ Лицензия: GPL 2.0 |
Это не совсем архивирование - это копирование, для архивирования надо бы прикрутить zip/rar/7z
Зачем для xcopy параметр /s если уже есть /e ? |
Цитата:
Если ещё и архивировать, будет вместо 5 — 15 минут висеть. И при этом архивирование редко дает хороший результат — базы обычно слабо ужимаются, они уже хранятся сжатыми. /s ключ — рекурсивное копирование. Цитата:
Код: Код:
7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_for_the_archive working_dir | findstr /P /I /V «Compressing 7-Zip» >>result_%date%.txtОттуда и эта строчка. Но в общем случае могу заметить, что ежедневное архивирование лучше делать в фоне, когда компьютер простаивает. При ежедневном старте компьютера лучше делать копирование, т.к. это быстрее и отнимает меньше ресурсов, и позволяет бухгалтеру быстрее приступить к полноценной работе. |
А я пользуюсь двумя скриптами - в одно м с помощью rar.exe архивирую что необходимо:
Код: Код:
"C:\Program Files\WinRAR\Rar.exe" a -agdd.MM.yyyy msh231-.zip L:\1C_BackUpBases\VolgaDrive\MSH231\1Cv8.1CDКод: Код:
'==================================== |
Цитата:
Хотелось бы, чтобы был инструмент поуниверсальнее, что ли. А то с одной машинки на другую переносишь — не работает. Мне вот пришлось 2 версии скрипта на bat написать — надо бы в 1 объединить, как дойдут руки. Чтоб в начале определил какая версия винды и далее понеслась. Да заодно и настройки сделать — архивировать или копировать Вот написали бы на VBScript замену поуниверсальнее, если разбираетесь. В одном скрипте. И архив можно делать в формате zip — штатный же формат в Виндовс. |
Добавлю свои скрипты - всё делаю в cmd, использую 7z и xcopy.
Код: Код:
REM START - %DATE% - %TIME%Ну а на сервере после сортировки бекапов и складирования, через robocopy выделяю старые архивы, перемещаю их в папку для удаления и удаляю всю папку. Код: Код:
robocopy E:\UsersDocsBackup\Users\1\ E:\UsersDocsBackup\NULL\ /minage:30 /mov Docs_*.7zЦитата:
|
Цитата:
По поводу платности rar - согласен. Но ведь и на этом форуме есть нуленные платные модули, чей в России живем. Меня такой вариант устраивает, так как работает все в пределах одной машины, проблем с совместимостью поэтому нет. |
Цитата:
Цитата:
Во-вторых, если есть альтернатива, она бесплатна и стоит везде (например zip) — именно это желательно и использовать вместо платной и которая есть не везде. Меня потому и заинтересовал Ваш вариант — VBScript есть везде начиная с Виндоус 98. И с ним кажется можно сделать и zip архив. Но вот как это работает — вопрос. Вы не пробовали в именах папок прописывать русские буквы? Возможны траблы. В-третьих, работоспособность скрипта, гарантированная на одной машине? не стоило заморачиваться. У меня на работе 50 компьютеров и 3 сервера. Пока скрипт крутится на 2-х машинах — архивируется клиент-банк и переписка секретаря. На основном сервере бекап делается другим скриптом, с архивированием — писал не я, но пока этот вариант устраивает. Там есть недостаток — не стираются старые архивы, что недавно даже привело к необходимости чистки. |
Убицца.
"Ваше сообщение в теме Периодическое сохранение определённой папки в архив и удаление неактуальных архивов под Windows было удалено. Причина: не в тему, похоже на рекламу платного продукта" Да KLS Backup платное ПО. Ну и что.Я не рекламирую ПО. Я его купил и пользуюсь. И именно после теста триала я убедил своего работодателя купить этот софт. У меня резервное копирование занимает почти сутки. Бэкапятся холодные копии всего. От файловой помойки юзеров до баз данных оракла (всего ~14Тб). В системе 300 локальных пользователей и плюс 56 физических серверов. Под каждый продукт(сервер) свой бэкап. Для всех продуктов общий бэкап-сервер который управляет удалёнными хранилищами. Готовые холодные РК(flat, zip, raw) в "СуперСклад"(хранилища на базе NetApp) перемещает KLS.Да, да вот эта софтина обслуживает решения за туеву хучу киломегабаксов - потомучто дёшево и удобно. Думаю что 80$ за софтину которая с лихвой покроет все потребности в резервном копировании участников в этой ветке - не дорого. Особенно для перцев с их работодателями которые обеспечивают работоспособность всяких клиент-банков. |
Цитата:
Эта тема про сохранение архивов штатными средствами Windows. Не другими прогами, ни под Линукс или Макось, а именно про это. Если пишете не про это, засоряете тему. Так понятнее? Я удалил не только Ваш пост, ещё несколько. Я хочу найти (или написать) решение, которое будет служить мне долгие годы у любого работодателя. А посты не в тему засоряют её и мешают читать — нечего сказать, не пишите. У Вас и всех остальных работодатели разные. Решение за 80$ для 3х машин — для моего перебор, и я с ним согласен. Хотите поделиться, какой замечательный софт — создайте себе тему и пишите туда. |
Обидеть не хотел. Хотел помочь.
Цитата:
Бесплатное ПО под Windows Bakula |
Не знаю будет ли корректно, и надеюсь не сочтут за рекламу, но я для подобных целей использую: xStarter
Удобно, бесплатно, не требует навыков программирования для легких задач. |
Использую, старый, но проверенный nnBackup. Помимо простого копирования, делает архивы gz или zip. Если задачи посложнее то nncron, с плагинами, плюс понимает cron-формат (Linux), да и встроенный язык скриптов очень прост. И то и другое бесплатно для граждан стран бывшего СССР при условии частного и некоммерческого использования.
|
В свое время писал вот такой скрипт. Умеет сканировать папку и вложенные в нее по маске, архивировать с указанным типом сжатия (нужно положить в папку со скриптом 7za.exe), прореживать архивы с указанной глубиной.
Кроме этого, пишет логи, есть режим отладки. Авось пригодится кому Для просмотра скрытого содержимого необходимо иметь 20 сообщений, у вас 0 сообщений. |
mad_boy, спасибо за скрипт
Я, пожалуй, даже откажусь от первоначального бат-файла и лучше доработаю как VBScript, ибо это труъ Пару замечаний таки есть. Цитата:
Позволяет контролировать место на ж. диске. И я не заметил такой проверки — если сегодня архив есть, то «давай до свиданья». Это так или плохо смотрел? Вот ситуация из жизни: в целевой папке 2 файла по 1Гб, на диске места 60Гб, архивы хранятся до 30шт. Архив весит 1,7 Гб. Если комп перезагрузят пару раз в течение 5 дней, то кончится место. И потом, что будет, если мы пойдем в отпуск и не запустим скрипт в течение 7 дней? По возвращении из отпуска первое включение сотрет все архивы. |
Есть такое дело, да. Не обратил внимание потому, что писал для себя, под готовую модель
Спасибо за замечание, так и пришлось лезть и переписывать полскрипта В итоге переделал алгоритм сканирования, попутно еще пару ошибок, добавил константу с минимальным количеством бэкапов в папке. Для просмотра скрытого содержимого необходимо иметь 20 сообщений, у вас 0 сообщений. |
Немного, если позволите, замечаний по уже готовому.
1. Переменная Error — не попадет ли в пространство системных имен VbScript? 2. Что за расширение у файла сейчас? Мне кажется, оно норм. работало с расширением .vbs и без Код: Код:
Дата нужна только, чтобы проверить, существует ли сегодняшний архив и если уже есть — выйти и ничего не делать. Я в другом скрипте делал уник. имя файла архива типа backup_20151216.zip И в начале скрипта проверял, «файл есть? — ничего не делаем» Хочу ещё спросить, Вы не хотите код кому-то показывать и потому скрываете под хайдом? |
На данный момент скрипт в wsf. Ну и хочу напомнить, что скрипт писал по большой нужде, когда в один момент закончилось место на одном из сервером и бекапы некоторое время вообще не делались. Потому все доведено до состояния "чтобы работало" и в таком виде существовало до сегодняшнего дня
В vbs вроде Err, нет? А DaysExpired для меня необходимо так же, как и раньше. Потому что нужно не просто оставить некоторое количество бекапов, а и именно последних из созданных. В принципе да, можно выполнить оба условия с одной переменной, но в моем варианте некая расширенная версия выходит. Хотя я не против, если кто-то уберёт её у себя. К тому же парк серверов у меня большой и много где бекапы пишутся с уже определенной маской, потому делал скрипт наиболее универсальным. Ну а хайд больше из дани ресурсу Я вот с 12 года читаю, а как понадобился скрипт - ограничение. Решил не просто набить сообщения, а как-то поучаствовать. Может и моё ограничение кого сподвигнет. |
Цитата:
Цитата:
wsf это изначальное желание Майкрософта скрестить ежа и черепаху, чтобы в 1 файле обрабатывались любые языки, установленные в системе. Удалите теги package, job, script в начале и конце файла и смело сохраняйте в vbs, раз не используете другие языки. Попробовал последнюю версию скрипта, натравив на обычную папку. Цитата:
1. Лог записался со всеми подробностями. 2. В изначальной папке исчезло половину файлов. В логах на этот счёт прокомментировано: Цитата:
3. Сам бекап сохранился неизвестно куда. Похоже, сработал контроль учётных записей пользователей и не дал запуститься 7za В логах об этом ни слова, переключение в режим отладки не выбрасывает никаких окон. Впечатления: 1. Использование дополнительного функционала 7za при легком сжатии не оправдано. Есть же изначальный формат zip Да и вообще вряд ли оправдано применение сторонних файлов, если разница в сжатии менее 15%. 2. Для ежедневного архивирования 7za проще написать 1 строчку в планировщике, чем юзать vbs Пример http://habrahabr.ru/post/72636/ 3. Поскольку куда делся архив неизвестно, то и как происходит ротация архивов неизвестно тоже. Я бы тупо сохранял последние 10-30 архивов и всё. А ежедневно проверял — сегодня архив если есть, то не сохраняем. 4. Порадовало помесячное сохранение логов, я до этого не додумался. У меня было ежедневное. 5. Судя по логам, оно опять архивирует, если даже есть уже сегодня архив. |
Цитата:
Цитата:
Суть работы программы в том, что сначала она сканирует папку на устаревшие файлы по дате (ведь скрипт мог по какой-то причине не запускаться долгое время, либо запущен в первый раз) и удаляет те, которые попадают под условия, однако, проверяя минимальное количество нужных архивов. Причем удаляются и не запакованные архивы, дабы не тратить время на их упаковку и последующее удаление (у меня одна база порядка 30Гб), и, судя по-всему, у Вас файлы попросту удалились, т.к. считались устаревшими, а контроль учетных записей тут ни при чем. Только после этого запускается архивирования оставшихся актуальных архивов. При архивировании пропускается свежий архив, возраст которого не более суток, т.к. в моем случае все сервисные задачи на серверах запускаются ночью, а бекап баз MSSQL может продолжаться довольно длительное время и не исключено, что при запуске скрипта файл еще будет занят процессом. Цитата:
Ну и, собственно, тоже натравил скрипт на тестовую папку, все отработало так, как необходимо: |
Цитата:
Но есть не большая проблема. Есть специфическая программа для работы с файлами проектов контроллера. Когда она открыта и использует файл проекта она не дает копировать файлы которые в ней открыты. И копии создаются не полноценные. И об этом узнал только когда решил откатиться. Но не получилось не хватало файлов. После этого стал копировать файлы только убедившись что у всех пользователей закрыта эта программа. Но это тоже не является гарантией что в момент копирования файлов никто не начнет эти файлы использовать. |
Цитата:
|
Цитата:
Цитата:
Например, сейчас у меня 3 задания — 1. Бекап 1С Предприятие в 21.15 2. Бекап 1С Сотрудники в 22.15 3. Бекап папки Табеля рабочего времени для подразделений в 23.15 Задачи разнесены по времени, чтобы гарантированно не пересечься и выполняться по очереди и в то время, когда в сети никого нет. |
Для подобных целей всегда пользовался планировщиками по типу nnCron, любая периодичность и чистки легко настраиваются + подключается архиватор, например, winrar из командной строки. При желании подключить те же дополнительные батники.
Например, # START-APP: C:\Program Files\WinRAR\WinRAR.exe a -ac -agYYYY-MM-DD -ep2 -m5 -r -rr -y -v1024M "F:\Архивы\бухгалтерия_.rar" "E:\Бухгалтерия\1С\*.*" Также можно настроить планировщик в Acronis True Image, качественный бэкап дисков\файлов\каталогов гарантирован. Удаление старых копий организовать, например, при названии имён файлов по дням недели и т.д. |
| Время: 05:40 |