Показать полную графическую версию : Резервное копирование 1С на backup сервер с записью на DVD
Banzaika
26-03-2010, 21:42
Доброго времени суток, задача:
Имею несколько серверов с базами 1С,
каждый день средствами 1С происходит резервное копирование баз,
по окончанию скрипт складывает полученный архив на отдельный backup-server (w2k3).
Формат файлов на всех серверах типа:
2009.03.01-buh.zip
2010.03.22-xx_buh.zip
2009.03.01-zarplata.zip
2010.03.25-Meta_server1.rar
Требуется создавать папки с именем вроде 2009.03.01-2009.04.01 и объемом 4,3Gb.
А так же записывать на DVD (заранее вставленном в привод)
Предполагаю:
цикл, создать папку взяв дату из имени первого обрабатываемого файла (2009.03.01-)
цикл обрабатывающий «выхлоп» команды dir и проверяющий сумму объема = созданной папки + следующий файл для перемещения
если суммарный объем больше 4,3 Gb, дописывать в имени папки дату последнего файла (2009.03.01-2009.04.01)
Далее нужна либо консольная утилита для записи DVD либо использовать встроенную способность винды…
Если честно, уперся с реализацией.
Заранее благодарен за любую помощь.
P.S. у меня уже около 4000 файлов общим весом 161Gb :(
P.S.S. на тему DVD есть ряд мыслей чтобы сервер сам брал себе чистые диски…
Banzaika
29-03-2010, 09:32
Уважаемые, не уж то никто не сталкивался с измерением объема обекта?
Мне только бы объем папки мерить, да файла чисто на объеме спотыкнулся :(
avolkov2009
29-03-2010, 12:54
Может копировать не средствами 1C? а прикрутить какой-нибудь архиватор, умеющий резать архивы на части?
Banzaika
30-03-2010, 09:40
1C и использует zip, а полностью папку Meta я жму консольным WinRAR.
Причем сами резервные копии созданные 1С обычно не привышают 150Мб, а вот Meta сжатая раром 1-1,5Гб.
Вы предлагаете добавить в архив без сжатия мои 160Гб бэкапа с начала этого года?
Ну допустим я получу файлы заданного объема, но случись что, как я буду добывать с 40 DVD базы за необходимый период? Ведь архив то будет разбит по томам...
Не, не канает, ладно что не красиво, это просто опасно.
Моя проблема в том что я не могу корректно из команды dir получить объем чего-либо :(
Может и не диром делать? Тогда чем?
avolkov2009
30-03-2010, 10:47
Может и не диром делать? Тогда чем? »
Попробуйте поискать здесь (http://gallery.technet.microsoft.com/ScriptCenter/en-us/). Много чего можно найти полезного.
Насколько мной осонана проблема: нужно за 1 запуск батника рассортировать имеющиеся файлы (отсортированные по имени, поскольку в имени файлов заложен правильно выбранный формат даты создания файла и мы можем предположить, что в результате неких операций сама дата модификации файла может пострадать, например передача файла по ftp) по каталогам, не превышающим размер DVD и имеющим в конечном варианте название, состоящие из первых 10 символов (дата) первого файла, перемещенного в этот каталог и через дефис первые 10 символов последнего перемещенного тудаже файла... уфффф... однако..... :drug:
умышленно "проигнорировал" пункт записи на DVD - тут Вам гугль в руки - я таким вопросом не владею ни в коей мере, ибо "мне-ента-не-нать" и вообще DVD крайне ненадежный носитель для бэкапов не говоря уже и о полезных данных *kidding*...
получаем следующий скриптик (оговорюсь - могут быть с ним проблемы:
1. не тестил на файлах с точками в имени и вообще с кривыми именами
2. не дай Бог один из архивов окажется более 2ГБ - ну его вроде и в стандартный образ DVD нельзя будет поместить...)
@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
rem Размер файлов будем округлять до секторов DVD (2KB),
rem иначе подсчет размера не поместится в 32 бита,
rem да и точнее так считать - каждый файл занимает целое число секторов
rem Объем DVD диска обычно от 2295072 до 2298496 секторов, выбираем меньший.
Set MaxSize=2295072
for /f "tokens=* delims=" %%F in ('dir /b /a-d /on') do (
if "!DName!"=="" (
set DName=%%~nF
set DName=!DName:~0,10!-
md "!DName!"
)
set /a FSize="(%%~zF+2047)>>11"
set /a Check+=!FSize!
if /i !Check! leq %MaxSize% (
set DSize=!Check!
move "%%F" "!DName!\"
) else (
move "!DName!" "!DName!!PName!"
set DName=%%~nF
set DName=!DName:~0,10!-
md "!DName!"
set Check=!FSize!
move "%%F" "!DName!\"
)
set PName=%%~nF
set PName=!PName:~0,10!
)
move "%DName%" "%DName%%PName%"
Banzaika
02-04-2010, 17:57
NiOl, Да вы коллега хаЦкер однако :)
Поняли верно, использую свои же метки для получения нужной информации об объекте (точки, тире, количество подстрок).
(в имени файла и наглядно и просто и надежно...)
ftp точно нафиг, чур меня, винда и проще и гибче, средствами ntfs куда проще разрулить по доступу,
про запись DVD - не моя прихоть, а ОИТ которые занимаются 1С, им надо все писать и складывать в сейф.
По делу:
1. попробую чуть посже, сейчас ну вобще никак, уверен что с именами проблем не возникнет...
2. на данный момент самый толстый файл = 1 742 954 кб
Про стандартный образ DVD правы, хотя консольные утилиты умеют и UDF писать...
Опять же это уже мои проблемы - при создании Meta-xxx.rar (именно они Гб весят) просто надо указать бить на тома при превышении обьема.
Спасибо за объяснения по формату DVD.
Banzaika
лично, я не совсем понял что вы хотите
раскидать 4000 файлов по папкам?
в тотал коммандере за 20 минут вручную
отсортировать файло по имени, далее с помощью выделения смотреть
сколько чего занимает и перемещать
вот это то же непонятно:
если суммарный объем больше 4,3 Gb...
а нафига делать больше если вам на DVD писать?
объясните конкретно на примере
DJ Mogarych
02-04-2010, 22:33
я не могу корректно из команды dir получить объем чего-либо »
Nncron вам в помощь (http://nncron.ru/help/RU/commands/files.htm#SIZE). Прекрасная штука, в него можно засунуть все ваши скрипты, а последней можно дать команду на запись DVD.
Есть ещё на том же сайте программа nnbackup, специально для задач резервного копирования. В тандеме с nncron можно решать задачи практически любой сложности.
А консольные команды поддерживает и CDBurnerXP (http://www.cdburnerxp.se/help/Appendices/commandlinearguments), и ImgBurn (правда, не нашёл для ImgBurn внятного списка поддерживаемых команд, надо на форум тамошний лезть).
ftp точно нафиг, чур меня, винда и проще и гибче, средствами ntfs куда проще разрулить по доступу,
про запись DVD - не моя прихоть, а ОИТ которые занимаются 1С, им надо все писать и складывать в сейф. »
Вот тут могу сказать "зря, Батенька, зря!" - вот на мне одна из задач - обеспечить сохранность данных (не всех, но доброй половины ;) ) в случае пожара или любого другого казуса с полной потерей данных в офисе. Для этого приходится менять внешний HDD с бекапами (2 параллельных бэкапа) и уносить его "в ячейку". Сначала я добрососвестно таскал эту дуру через день - сейчас обленился и меняю диски только по пятницам и понедельникам.
Когда же на меня сгрузили обслужимание второго офиса и я там тоже навел порядок с бэкапами, то таксать еще и и данные мне стало совсем невмоготу... тогда, пользуясь тем, что во втором офисе инет вполне нормальный, а бэкапы прибавляются неспешно - менее гига за сутки, то накрутил скрипт, который шлет свежие файлы бэкапа ко мне на ftp...
Есть, правда в этом проблемка, для безопасности ftp вход даже не кажет файлов, которые там находятся, не то, чтобы позволить их выкачать. Таким образом отследить, какие файлы точно уже "там" - невозможно, проходится вести подобие лога, при передаче каких файлов ошибки не возникло. Сейчас ломаю бошку - как это сделать культурнее, а то скрипт древний, пора бы его переписать...
Banzaika
05-04-2010, 18:59
1. не могу протестить вариант NiOl, болею я, но интуитивно "оно".
2. zonderz, вообщето форум админов и программистов, без обид, но ручками и тетки с бухгалтерии хорошо работают - им последовательность кнопок объяснишь, они ее себе в блокнот записывают и каждый день повторяют...
По поводуа нафига делать больше если вам на DVD писать? »
- перечитайте начало темы, речь не о больше DVD а о превышении объема 2Гб для 1го записываемого файла.
3. DJ Mogarych, прокомментируйте пожалуйста, если чесно, не понял, синтаксис красивый, это отдельное ПО?
Ни разу не видел аналога в обычной консоли "из коробки".
4. зря, Батенька, зря! », дык у меня для этого отдельный backUP сервер на случай ядерной войны:) резервные копии на него ссыпаются, но кроме всего прочего еще и ОИТ свои 1С базы хочет у себя в сейфе хранить.
Про ftp у меня проще - все в 1й локальной сети.
А Вам не проще организовать защищенный канал и передавать "красиво" чем попало?:)
P.S. вот на днях пытался прикрутить Acronis True Image Enterprise Server Echo 9.7, он красиво за 7-15 минут снимает образ с системного диска сервера на ходу. Проблема в централизованном расписании по всем серверам, фиг пойми как происходит логин по рассписанию...
А как забирать и складировать эээто я уже умею :) а гл.восстанавливаются образы так же вкусно как с слизываются.
дык у меня для этого отдельный backUP сервер на случай ядерной войны резервные копии на него ссыпаются, но кроме всего прочего еще и ОИТ свои 1С базы хочет у себя в сейфе хранить. »
+1
А Вам не проще организовать защищенный канал и передавать "красиво" чем попало? »
Пробовал. Вопервых это сильно усложняет задачу на клиентских компах, а вовторых итак мой домашний сервак (он изначально создавался как файлообменник(файлопомойка) для "своих") без перерыва пытаются отиметь во все дыхательно/пихательные, а тут лишние порты открывать - вообще в неприличную позу поставят, а канал поднимать я умею только под МелкоМягкими, какая там безопастность - все прекрасно знают. Вдобавок сервак уже в коматозе, чтоб лишними сервисами нагружать - вечно ресетится, а бабла на новый как-то нехватает - то в машину нужно срочно вложить, то новое стеклышко к фотику прикупить... ;)
вот на днях пытался прикрутить Acronis True Image Enterprise Server Echo 9.7 »
90% бэкапа делаю именно Акронисом, только стараюсь пользовать "home" - она по деньгам доступнее (500р на тек. момент).
Сразу 4 сервака по сети льют инкрементные бэкапы данных каждую ночь с разрывом в 10 минут на 1 диск. Днем 2 раза в неделю этот диск меняется на точно такой же, но со своими файлами бэкапа, созданными теми же серваками, по тем же заданиям. Протоколы шлют на мыло. (по суботам к бэкапам данных добавляется бэкап системы). Когда один диск заполняется до упора (от 2 месяцев до полугода) - я его очищаю и все начинается сначала. Важно следить, чтобы переполнение на обоих дисках не происходило одновременно - обычно для этого хватает в самом начале бэкапов дождаться заполнения одного диска ~75% и преждевременно его очистить. 75% - из-за того, что у меня первичный (полный) бэкап разросся почти до половины объема диска. Далее слежу по логам на мыле - пришла ошибка или не пришел отчет - лезу на сервак, иначе - удаляю успешные отчеты и "веду себя по-дефолту".
Banzaika
05-04-2010, 20:59
NiOl, а я проблему очистки уже для себя решил ;)
Потроха думаю тебе не интересны, но сам принцип: делаем дир в обратном порядке и с заданной строки удаляем по шаблону.
При учете что Бэкапы раз в день то самое оно! Причем у меня есть что я "храню" полгода, а есть что всего пару дней, всю нужную для работы скрипта инфу содержат имена Бэкапов :)
:: Сколько дней (ну, строк выхлопа дира пропускать, тобишь например самые свежие 5)
set old=5
:: где будем ковырять (безопасность надо соблюдать :) )
cd /d c:\temp
:: сам дир с шаблонами
for /f "skip=%old%" %%i in ('dir %put%\*.zip /b /o:-n') do del /q %%i
Сначала я разогнался на вычисление дат и т.п. но столкнулся с проблемой - если какая-нить кура в бухгалтерии из базы на ночь не выйдет, то и бэкап с 1С снять не удается, а значит может быть ситуация что бэкапы все уже удалены а проблема как писец серверу как раз и подошел... выходит проще оставлять тупо например последние 5-10 бэкапов на рабочем сервере.
Сам не ожидал что в 2е строки решить можно, хотя до этого талмут строк в 150 был и не знал как еще дописать чтобы всех пользователей учесть.
П.С. еще одна хахма в том что скрипт 1ин, а заданий в планировщике много и каждое со своими %1 прям в строке адреса ;)
Banzaika, Вариант подходящий, но только для полных бэкапов. В Вашем случае я бы даже отталкивался не от количества последних бэкапов, а от резерва свободного места на диске бэкапа, с разумными допусками вперед, т.е. если самый большой архив 1,5 гига, то допустим при достижении свободного места ниже 6 гигов удалять старые архивы, пока не выйдем на границу 6 гигов. ;)
Зачем со скриптами париться? :) Почти всё это умеет делать Handy Backup, единственный минус - не умеет принудительно пользователей из 1с выгонять. А так и временные метки и планировщик и свое шифрование, да и другие фичи - типа дифференциальный и инкрементальный бэкап есть
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.