Как стать автором
Обновить

Комментарии 43

Зачем нужен специальный 7za, требующий двух внешних файлов, если обычный 7z.exe требует одного внешнего файла (7z.dll)?
Спасибо за замечание, поправил
Пост из 2003 года.
Сейчас все быстрее, проще и удобнее делается из PowerShell, без каких-либо сторонних бинарников.
В моем win2k3 он по дефолту отсутствует. К тому же, начинать сразу с PowerShell, имхо, нерационально. Не сомневаюсь, что PowerShell хороший инструмент, но, подчеркну еще раз, инструмент должен быть соразмерен задаче. Когда настанет момент, что возможности BAT исчерпают себя, PowerShell будет первым кандидатом, чтобы продолжить разрабатывать на нем.
У автора, как я понял, как раз win2k3. На него есть Powershell?
Есть, но нужно ставить отдельно. Кстати, есть чем-то похожий на авторский скрипт для бэкапа с использованием того же 7-zip. Собственно, его я и заменил на Cobian, так как столкнулся с какими-то проблемами (уже не помню подробностей).
Не знаком с fsbackup, но ранее под Windows для бэкапа файлов пользовался Cobian Backup, жмёт тем же 7-zip.
Благодарю за наводку! Сегодня же попробую этот софт в деле
https://lightbackup.com/
Программа работает с любыми ОС Windows от WinXP и выше, всех разрядностей.
Поддерживается теневое копирование тома для чтения заблокированных файлов.
Для файлов, которые не изменились с прошлого копирования, создаются жёсткие ссылки.
Позволяет делать резервные копии съёмных носителей без создания теневой копии.
Работает с сетевыми ресурсами и поддерживает создание хардлинков на них.
Поддерживаются пути файловой системы любой длины и любой кодировки.
Полная поддержка юникода, два языка интерфейса (русский и английский).
Создание общего журнала работы программы и журналов по каждой копии.
Поддержка тихого режима и автоматического удаления старых копий.
Не требует никаких сторонних библиотек для своей работы.

В 2003 винде был еще нормальный шатный бэкап — ntbackup. Зачем изобретать велосипед, если там было все что нужно? Автор сам виноват, что не продумал схему бэкапа и восстановления до аварии. Ну и то что за бэкапом не следили, это тоже не проблема инструмента.
Про проверку бэкапов уже даже молчу…
osipov_dv, в том, что бэкап оказался неработоспособен, спорить не буду, виноват сам. Но, сравнивая fsbackup для *NIX, и стоковый ntbackup для Windows, я однозначно выберу первый: на днях, проверив бэкап на *NIX сервере, я как и ожидал, увидел что бэкап данных на этом самом сервере работает. Не год, не два, и даже не три, а с 2009 года! Естественно, мне захотелось иметь что то подобное для windows.
Если нужно бэкапить только файлы с файлсервера, то есть и был robocopy… а писать под винду на «шеле» как-то не очень правильно.

Серию условных операторов можно писать так — визуально уменьшается вложенность, увеличивается читабельность


if cond1 (
) else if cond2 (
. . . 
) else if condN (
) else (
)

Update:
К вопросу о программах бекапирования. Есть еще nnBackup весьма шустрый и гибкий.

Nnbackup платный, сам пользуюсь cobian backup

http://www.nncron.ru/register_ru.shtml


nnBackup бесплатен для граждан стран бывшего СССР при условии частного и некоммерческого использования
ну, не отрываясь от темы топика, то в данном случае как раз его использование было бы коммерческим
davydt, уже второй хабровчанин советует эту программу.
Это знак :)
Надо попробовать
Я третий. Cobian Backup умеет это из коробки.
Интересно, в предыстории у Вас задета важная шара. Т.е. на компьютере бесстрашного пользователя была важная шара? Которую шифратор и полюбил? Или этот шифратор, пробрался на Windows Server по сети и там всё полюбил?

Вообще, уже несколько лет, для таких целей работает связка из обычного скрипта, который наа сервере запускается по расписанию ночью.
set src=f:\folder\foldrer
set dst=e:\b\folder\foldrer
xcopy /i/e/d/c/y %src% %dst%

и программы Cobian Backup которая на другом компьютере по расписанию забирает скопированные файлы на сервере. В итоге, на самом сервере есть резервная копия и на другом компьютере.

Кстати, после недавних событий с шифратором. С испугу, по расписанию, стал выключать сетевуху и включать только на время пока копируются файлы. Чтоб резервный компьютер был вне сети пока все работают и могут нахватать заразы. Потом отказался от этой затеи, а то совсем паранойя)

Именно. На компьютере пользователя была важная шара, и ее полюбил шифратор. Когда задумал написать сей велосипед, тоже смотрел в сторону xcopy и robocopy, но 7-Zip для меня предпочтительнее: он умеет считать хэши и выводить список файлов архива, а значит, впоследствие можно сделать инкрементальное копирование по схеме один архив — один инкремент, как это сделано в fsbackup. Сейчас думаю, как это реализовать.
psbspb, а каким образом Cobian Backup узнаёт, что xcopy завершил свою работу?
>>>а каким образом Cobian Backup узнаёт. К сожалению никаким))) Здесь есть тонкое место. Просто ставлю копирование в 00.00, а в 6.00 cobain забирает.
Не думаю, что это паранойя. Поддерживаю такую идею с отключением. Но можно ещё и так: зафаерволенный на входящий трафик «сервер» сам лезет по крону на нужные серверы/АРМ и копирует к себе архивируя rar-ом с паролем в файл с расширением ururu или ещё каким-нибудь выдуманным.
Хотя нет, паранойя :-)
Автору статьи благодарность! Работаю над похожей задумкой. Пишу сервис бекапа на Python на основе 7-zip. Моя идея в веб-морде к сервису бекапа: чтобы можно было посмотреть что сделалось, когда сделалось, статистика и т.п. При этом нет необходимости заходить на сам сервер — работу можно мониторить прямо в окне браузера.
catexis, это будет любопытно потестировать! Буду ждать вашего материала по этой разработке.
К сожалению у меня «гостевой» аккаунт, поэтому разместить что-либо у меня не получится. В связи с чем — когда будут первые результаты напишу ЛС.
Я же считаю, что решение должно быть соразмерно поставленной задаче, а в моем случае задача — иметь в укромном месте резервную копию файлопомойки, которую можно быстро развернуть — именно этим меня и разочаровал ntbackup.

robocopy + 7z + однострочный скрипт.
Можно и так. Но во-первых, robocopy нет в win2k3 «из коробки», нужно для этого накатывать Windows Resource Kit. Во-вторых, все дело в реализации: что будет делать robocopy и что будет представлять из себя однострочный скрипт?
Как я понимаю, NTFS ACL и владелец файлов и папок в архив не кладётся?
Пока что нет, но вопрос решаем (то есть в процессе решения) — 7z может складывать инфу о правах доступа, но насколько мне известно, только в wim архивы.
Мда… Во-первых совершенно не понятно за что минуснули товарища rbobot-а. Он абсолютно прав — это задача для powershell
Во-вторых. 2к3 винда? В 2017 году? Серьезно? Даже не смешно. Да, есть варианты когда она нужна, но там точно не стоит задача бекапить шару. А уж если вам так нужно — так сейчас большенство NAS-сов умеют шару раздавать да еще и пользователям с авторизацией через AD.
В-третьих. Штатный бекапер в 2к3 был шикарен. Все что тот описано делается без проблем на нем
В-четвертых. Есть куууча софта для бекапа. Как минимум уже назвали Cobain, nnBackup. Есть еще winrar с очень навороченной командной строкой. Есть как минимум служба vss.

Ну и отдельно, не про автора лично, а про подход. Была проблема, ее не удалось решить стандартными средствами из-за человеческого фактора, так вместо того, чтобы задуматься и устранить причину мы лобаем из глины и палок какую то поделку, которая якобы убирает следствие, да и то не факт.
А что будете делать когда ваш скрипт в тихую облажается? Как узнаете? Каждый раз проверять глазами? Надоест через месяц. А что с проверкой бекапа? Опять же — ничего. А самое страшное, новички приходят на хабр, читают такие вот истории и делают тоже самое. А потом плачутся что их уволили/депримировали «на гладком месте»

В общем многоуважаемый автор, я бы на вашем месте убрал бы эту статью себе в бложек/заметки/соцсеть и не выкладывал бы ее на технических ресурсах.
>> Он абсолютно прав — это задача для powershell
Странные у вас представления о правоте — если реализуемо, почему бы и да?
>>2к3 винда? В 2017 году? Серьезно?
Да, win2k3. Да, в 2017. Серьезно. Работаю с тем, что есть, и в ближайшее время обновление не предвидится.
>>Штатный бекапер в 2к3 был шикарен
Без сомнения хорош, но вот не заладилось у меня с ним (да и не только у меня)
>> Есть куууча софта для бекапа
nnBackup бесплатен только для частного использования, winrar также не бесплатен.
Cobian Backup и vss — согласен, интересная тема, стоит попробовать.
>>А что будете делать когда ваш скрипт в тихую облажается? Как узнаете?
Логи же :)
>> А что с проверкой бекапа? Опять же — ничего.
Кстати, спасибо за наводку. Стоит включить тест целостности архивов в планировщик.
>> В общем многоуважаемый автор, я бы на вашем месте убрал бы эту статью
Начинали с жесткой (но конструктивной) критики, а закончили откровенным хейтерством
Если вы думаете что я не был таким же в начале карьеры — ошибаетесь. Так же пытался делать велосипеды с квадратными колесами. Но попав в похожую ситуацию и огребя достаточно много проблем (при условии что папка была в общем то не сильно нужной — пропали фотки с корпоратива маленькой конторки) я понял что велосипеды могут выйти сильно боком. С тех пор стараюсь их обходить стороной и искать проверенные решения. А вы мало того что сделали странный на мой взгляд вывод из ситуации, так еще и делитесь таким подходом на ресурсе с высоким уровнем доверия

Вы, возможно, теперь крутой админ — я рад за вас, но хабр читают и начинающие, и для них данная статья — хороший источник опыта. Да и для других тоже. Я вот этот этап прошел, сам подобное писал — более того, мое решение уже 10 лет работает (тоже батники и архиватор плюс вторым слоем robocopy). У меня сделано по другому, и поэтому, хоть и пройденный этап, но я почитал статью с интересом. И разослал своим районным админам, которые исключительно самостоятельно пытаются подняться их эникейщиков. Давайте снобизм спрячем или унесем на другие ресурсы, а здесь будем общаться как профи, а не как хипстеры в барбершопе.

Меня вот удивляет всегда — вроде на этом ресурсе умные и опытные люди, но рассуждаете иногда так, будто админ вот так просто пошел и купил лицензию на сервер 2016, чо уж. А ведь прекрасно понимаете, что как коммерсы, так и бюджетные организации свои деньги считают, и если простой тупой обычный файл-сервер выполняет свои функции под 2003, то зачем тратить деньги? Да если бы начальство вдруг решило его обновить — я сам бы уперся: "РАБОТАЕТ — НЕ ТРОГАЙ!". Более того, я вас удивлю — у нас в районном филиале до сих пор работает сервер под win 2000. Места на нем под его задачи достаточно, архиваторы запускаются, функции документопомойки выполняет. чего еще нужно? Переделывать только потому что бэкапы можно будет делать более модной штукой? Really?! В любом случае, любую задачу можно решить несколькими способами, и я обычно сначала решаю самым быстрым, то есть если я командный язык винды знаю наизусть со всеми фишками и тонкостями — я сделаю сначала на нем, БЕЗ ОШИБОК (точнее с минимальным их числом) и БЫСТРО, а потом, когда задача решена и выполняется так, как требовалось, буду искать более эффективное или красивое) решение. Потому что я, например, плохо знаю тонкости powershell, и, в виду его сложности и многомерности, гораздо дольше буду решать задачу. И ошибок наделаю больше. А ошибки — это потрея данных. Оно мне надо?

(trolling mode on)
о, красноглазеГ детектед
(trolling mode off)
Извините, не смог удержатся.

Попробую ответить на оба ваших поста.
1. Про начинающих. Начинающие как раз должны сразу учиться грамотному, комплексному подходу к решению задачи и сразу же учиться продумывать последствия. А это как раз антипаррент такого поведения (об этом ниже).
2. «почему не скрипты»
Блин, как-то тут все сложно с изменениями комментов. Продолжу
2. «почему не скрипты». Потому что это бекапы. Не только основа спокойного сна админа, но и защищенность фирмы. В ваших скриптах нет оповещения о ошибках, отработок исключений, большого количества проверок.
У меня тут недавно на работе запросили автоматом скачивать клад и разворачивать его в указанную папку. Казалось бы — 2-3 строчки на cmd/powershell. Ан нет, когда учли хотя бы в первом приближении все возможные варианты скрипт получился 60 строк и содержал в себе отсылку сообщений по результату или информацию о ошибке, проверку на изменение файла в источнике, возможность в автоматическом режиме откатиться если что-то пошло не так, ну всякого такого.
Всего этого нет в ваших скриптах, но чаще всего предусмотрено в специализированном ПО.
3. «я уволился, теперь это не моя проблема». Ваши скрипты нужно кому-то поддерживать и после вас. Мы все не вечны, мы все меняем работу периодически. И пришедший на ваше место человек не раз помянет вас добрым словом разбираясь в этой каше из скриптов, *nix-way утилит и прочего. Причем подавляющее большинство не делает документы, поэтому какие-то процессы со временем забываются и бывает очень больно их чинить даже самому.
4. «есть админы которые делают бекапы, есть которые уже делает бекапы и есть те, которые их проверяют». Народная мудрость так сказать. Так вот, как я уже писал выше вы даже не узнаете если что-то пошло не так. И никто не задумывается о том, чтобы банально делать хотя бы проверку на то, что архив откроется.
5. «нету денег». Да, если прийти и сказать «мне завтра нужен новый сервер за 100500 мульенов евро» вас пошлют. А если прийти и с цифрами обосновать простои и риски, да еще и сказать что это нужно не завтра, а можно заложить в бюджет на следующий месяц/квартал/год — успех практически неизбежен. Ну а если ваш начальник настолько уверен что у ним никогда ничего не случится — то можно схитрить, раскидать железо по новым закупкам и собрать в итоге новый. Потому что в любом случае с вас спросят. Результат просто будет разный. Ну или в тихую начать искать альтернативное место с более адекватным руководством.
Опять же, linux не имеет лицензионных отчислений (не путайте с бесплатно, линукс периодически оказывается дороже Windows), и на базе этого можно сделать все что нужно.
6. «работает — не трогай». По началу тоже так думал, пока не столкнулся с таким понятием как «технологический долг». Ибо простой пример — серверу 10 лет. Сдохла память. Что делать? В магазинах нет, брать б/у? А кто даст гарантии? А если мать? А как винт подключать если он какой-нибудь сильно старый. И получается что тот же самый комп уже нужно покупать срочно, и есть простой по работам на восстановление, и не факт что получится. А незапланированные расходы и госы и бизнес ненавидит люто =)

P.S. Мой препод по сапрмату любил говорить ленивым/тупым студентам — «чем больше таких как вы, тем больше я стою на рынке». Так вот лично вам мне очень хочется сказать тоже самое =))))

По поводу проверки бэкапов и оповещения — у меня — все есть. Насчет сопровождения после меня — у меня — все откомментировано. У меня по всем процедурам есть маны. Все расписываю, где, что, зачем и как запусается. Начальник проинформирован где что лежит. Поэтому я не только могу уволиться, но и спокойно уйти в отпуск, на больничный или вовсе на кладбище.


По поводу "нет денег" — скорее всего вы не работали в по настоящему большой бюджетной организации. Да, обоснования мы пишем. И не мы одни — почти 90 областей и республик тоже пишут. А бюджет не резиновый. Его распределяют, натягивая как могут, затыкая самые критические дыры. Но даже если решат удовлетворить, то это будет не завтра и не через неделю. Заявки подаются не позже начала осени, чтобы успели сверстать в бюджет, который в свою очередь должен успеть попасть в бюджет правительства. А когда это попадет в бюджет — ждем проведения торгов, конкурсов, прочего согласно законодательству, заключения договоров, утверждения и проведения оплаты бюджетом — и к конце СЛЕДУЮЩЕГО года получаем требуемое. Или не получаем. Или получаем, но не можем использовать, потому что оборудование не соответствует тех. требованиям, с поставщиком судятся, а железо лежит на складе 7 лет арестованное...

Хм, всегда под красноглазием понимал немного другое. А вот я у вас "снобизм детектед". Похоже, вы считаете, что лучше меня знаете, как у меня скрипты написаны. С чего вы решили, что там нет проверки бэкапов и логирования? И кто сказал, что начинающий, после того как БЫСТРО и эффективно решил задачу, будучи уже спокоен за сохранность данных, не сел за гугл и не начал курить маны на более продвинутые технологии? И что бы могло случиться с данными, если бы он не решил проблему бэкапов способом, НАИБОЛЕЕ БЫСТРЫМ для НЕГО способом, а сел бы сначала за изучение PowerShell, при этом оставив ценные данные на произвол судьбы? Что лучше — написать за полчаса батник и в этот же день испытав его и поставив в шедулер, а потом углубиться в новые продвинутые технологии со спокойной совестью, или зарыться в литературу, посылая начальство, требующее в кратчайшие сроки организовать резервирование, в эротическое путешествие, а самому на несколько дней углубиться в чтение мануалов?
P.S. Всё нормально тут с изменением комментов :)

Хлопушки-воробушки, сколько экспрессии на ночь глядя =) Эк задело то, видать за живое =))

1. Я не слова не сказал про _ваши_ скрипты, я говорил про подход в целом. Если вас это так цепляет, то может дело в вас?
2. Начинающий, быстро и эффективно… Это миф =) Или сильно не начинающий, или крайне не быстро, или совершенно не эффективно. Опять же — сделали задачу и тут же начинаем ее переделывать? Ну… Ну в госке может и прокатит. Хотя тоже не факт.
Так же мне не понятно зачем _начинающему_ изучать некромантию в виде cmd. Сейчас у MS большая часть функционала — это powershell, так что его изучать придется гораздо раньше, чем cmd. И вообще, что _начинающий_ делает возле бекапов? =))))
3. Мне тут в личной беседе весьма осведомленное лицо по пьяне взболтнуло что HP за 16 продала железа госсектору на 15 миллиардов рублей. В принципе даже верю, при условии что косвенные подтверждения можно найти. Так вот это HP. А если еще другие вендоры, плюс самосбор. Так что деньги есть. Да и сам я общался пару раз с руководством крупных госсструктур. Да, там много бреда, но деньги получить можно.

P.S. хорошо что хоть вопрос о преимуществах PowerShell над cmd удалили. А то бы вас тут просто засмеяли бы. Одна проблема, письма о комментариях приходят с текстом комментария =)))
P.S.S. Правда обидно что половину аргументов вы просто проигнорировали, хотя это очень важные моменты. Но чтобы их понять надо немножко изжить из себя BOFHа
Мда, сняли статью с языка, сам хотел писать. Мои наработки и добавления.

@backup-list.txt — где «backup-list.txt» файл со списком путей для бэкапа. К примеру:
C:\Users\Администратор\Desktop\
D:\TEMP\*.???
D:\TEMP\Programs\SumatraPDF\
C:\Program Files\Media Player Classic HomeCinema\Download AC3Filter.url


*.??? — Мы не хотим целиком резервировать папку (подпапки), но хотим зарезервировать все файлы находящиеся в ней.

-x@ignore.txt — список пропускаемых файлов (ignore.txt). А вот тут немного хитрее. Абсолютные пути не работают. Работают пути как они отображаются в архиве.

*.mp3
Users\Администратор\AppData\Roaming\Mozilla\Firefox\Crash Reports\
Users\Администратор\AppData\Roaming\Thunderbird\Crash Reports\
Program Files\Mozilla Thunderbird\ALEX_profiles\Cache\
Program Files\Mozilla Thunderbird\ALEX_profiles\cache2\


Так же у меня в этом же файле настроена отправка архива на гугл диск с помощью консольной утилиты Google Drive CLI Client. Скорость правда не ахти, всего 5мбит/с, но для гигабайтного архива вполне нормально. Отдельный разговор как получить постоянный токен.
Создать токен командой — gdrive-windows-x64.exe about
В терминале выдаст URL который копируем в браузер и запускаем, логинимся, даем доступ, получаем ключ.
Затем находим файл в C:\Users\Администратор\AppData\Roaming\.gdrive в котором находим «refresh_token». И чтобы была полная портабельность, избавляемся от папки .gdrive.

B:\BACKUP\gdrive-windows-x64.exe --config B:\BACKUP\ --refresh-token "1/riеqsg5J78Ftq4WmxtРtc0w6Iрhf3kJX7oGwljFE" upload --parent 0Bx0I330bQqVB19PdHRX1hEGW B:\BACKUP\backup.7z


--refresh-token — взяли заранее в папке .gdrive.
--config B:\BACKUP\ — путь к программе.
--parent — имя папки на гугл драйве.

Я не стану выкладывать сюда свои батники, просто опишу в общих чертах, как я решил подобную задачу.


У нас большая гос. организация, только в нашей области работает почти тысяча человек, но в областной управе пользователей около 200. Для них есть шара, на которой лежат их документы — в основном офисовские файлы, pdf, tif, jpg. Какие-то файлы меняются часто, какие-то несколько лет не трогают, но могут понадобиться в любой момент, поэтому в отдельный архив не убираются. В результате суммарный размер его — около 700 гб. Создание бэкапов сделано на BAT-файлах, архиватор — RAR.EXE, дополнительное средство — ROBOCOPY.


Скрипт просто архивирует файлы, имеющие атрибут "архивный". При необходимости сделать внеочередной полный бэкап просто сбрасываю архивный атрибут у всех файлов.
Папка для бэкапов создана на том же сервере, что и файлопомойка. Не торопитесь критиковать, это было сделано специально для увеличения скорости. Просто по окончании создания бэкапа измененных файлов запускается RoboCopy для обновления зеркала И ОСНОВНОГО ХРАНИЛИЩА, И БЭКАПА на NAS'е.


В результате я имею простое зеркало файлопомойки с последними версиями документов и полный бэкап всех файлов со всеми их версиями за последний год (полный чистый бэкап обычно делаю в новогодние праздники, потому что полный бэкап занимает около 2х суток).
С сервера файлопомойки доступа к зеркалу нет, скрипт запускается с третьего сервера, который подключается к шарам только на время бэкапа. Кроме того, к NAS он подключается не через SMB (что небезопасно по нынешним временам), а по NFS.


И прошу, не вспоминайте про Powershell, основа этих процедур закладывалась еще 15 лет назад, когда файл-сервер и зеркало были на Novell, а управляющий сервер — на Win 2000.


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


P.S. И да, естественно — зеркало еще раз в неделю скидывается на ленту.
P.P.S. 7Z не использовал, потому что без дополнительных телодвижений он не может выбирать файлы для архивации по их атрибутам.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории