tools | Homeless In Belarus - Part 3

Консольный бэкап

9 Май 2008 | В рубриках tips'n'trips, tools

не про SEO, но тоже нужно

Узнал от Тормоза о конкурсе про лучшую заметку о бэкапинге. Не претендую на лучшую, однако обнародую свою заметку о собственном методе бэкапа, который я успешно применял при резервном копировании критичных для меня и не только для меня данных.

Работая в свою бытность админом на одном из беларуских предприятиях, сопровождал я одну программулину производственного значения, на которой ежедневно сидело 2 отдела. Так вот, база данных этой программулины за 2 года обильного юзания разрослась до необъятного и важность информации, хранящейся в данной системе представителями отделов возносилась как грандиознейшая работа всех их жизней взятых вместе и сразу.

В один прекрасный момент я понял, что если эта база ненароком йобнеццо, то количество желающих оторвать мне йайца резко увеличится ровно на ту численность, работающих в этих двух отделах. Судя по принятым обязанностям, я сделал вывод, что предыдущий админ походу понятия не имел, что такое бэкап, резервное копирование и ничуть не заботился о судьбе своих йайцев :)

Я же был не таким легкомысленным и беспечным в отношении к своим органам и мне пришлось напрячь свой моск и придумать чего-нить этакого.

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

Лениво было разбираться во всем этом зоопарке утилит для резервного копирования и я в виду тривиальности задачи решил обойтись простым консольным решением в виде обыкновенного bat-ника, используя стандартные команды интерпретатора (cmd.exe), штатную команду копирования винды (xcopy.exe) и консольный вариант самого популярного архиватора от Евгения Рошаля (rar.exe).

Посидев немного с ключами перечисленных утилит, у меня получился вот такой батничег:

>backup.bat

@echo offrem Выводим текущее времяecho %TIME%rem Создаю директорию вида DD.MM.YYYYmd "%DATE%"rem Перехожу в созданную директориюcd "%DATE%"echo Копирую и сохраняю результат копирования в лог ...xcopy d:\programulinа\* /s /f /z /c /exclude:..\exclude.txt > backup.log rem /s - копирует все папки и подпапки, кроме пустых;rem /f - отображает имена исходных и конечных файлов во время копирования;rem /z - копирует сетевые файлы с возобновлением;rem /c - продолжает копирование, даже если произошла ошибка;rem /exclude: file1[+file2][+file3]... - указывает список файлов, содержащих строки. rem Каждая строка должна находиться в отдельной линии в файлах. Если одна из строк rem совпадает с любой частью абсолютного пути копируемого файла, то такой файл rem копироваться не будет. Например, указывание таких строк, как \\obj\\ или .obj, rem исключает из копирования все файлы в папке obj и, соответственно, все файлы с rem расширением .obj;rem Перехожу на папку вышеcd ..echo %CD%echo Архивирую...rar a -df -r -ag+YYYY-MM-DD backup/b "%DATE%"rem a - добавить файлы в архив;rem -df - удалить файлы после архивации;rem -r - рекурсивно с подкаталогами;rem -ag[формат] -добавить к имени архива текущие дату и время;echo Усё ý парадке, шеý.echo %TIME%

В следующем файле перечислил все те части абсолютного пути, которые необходимо проигнорировать при копировании

>exclude.txt

\mr\xz\Recycled\tmp.wbk

при запуске батника производиться копирование файловой структуры из места источника (d:\programulinа\) в место назначение, в данном случае в директорию, где находиться сам батник.

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

>net start schedule

и с помощью консольного планировщика заданий (at.exe) сделать намеченое.

>at 03:03 /every:M,T,W,Th,F d:/backup/backup.bat

Проверим создалось ли расписание, для этого запустим at.exe без параметров

Статус Код  Дата                    Время         Командная строка------
-------------------------------------------------------------------------        1   Каждый M T W Th F       3:03          d:/backup/backup.bat

Вот в принципе и все. Как говориться, «зачем платить больше» и все такое.

Главное преимущество моего метода резервного копирования, заключается в том, что весь необходимый функционал, не считая планировщика задач, осуществляется с помощью 3-x подручных программ.

Что касается бакапа системы, то частенько прибегаю к архивированию данных состояния системы стандартной виндюшной тулзой Пуск>Программы>Стандартные>Служебные>Архивация Данных.

И вообще, дам очень полезный совет, который не раз спасал меня от неминуемой кастрации:

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

остановись …

отбрось все остальные мысли, отложи все текущие дела на потом …

представь отчетливо, что будет если ты потеряешь курсач/проект/систему и т.д…

представил?…

теперь с радостным наслаждением о том, что это было лишь твоя фантазия делаешь
бэкап курсача/проекта/системы.

Update: Недавно наткнулся на очень хорошую подборку статей от СПЕЦ ХАКЕРа. Выпуск специятельно посвящен вопросам бэкапинга и востановления данных.

Не скучайте.

PS. Всех, C Днем Великой Победы.

ДубляЖЖ или нах кросспостинг!

3 Март 2008 | В рубриках blogging, tools, traffic

На одном из экспериментальных блогов использую плагин для WordPress – lj_crossposter, который автоматом кросспостит посты в ЖЖ. Основной целью, возлагаемой на данный плагин, являлась средством для привлечения жжшной айдитории к своему блогу.

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

Так что, принимаю решение однозначное и безповоротное – «нах кросспостинг!», ибо дублирование контента на данный момент не очень способствует продвижению ресурса как такового. Исключением возможно являются раскрученные жжшные аккаунты, однако даже в этом случае, думается мне, что правильнее перенаправить аудиторию на новый блог, чем плодить дубляЖЖи :)

До связи, товарищ.

Защита от сервиса с непристойным названием

24 Декабрь 2007 | В рубриках sape, service, tools

или Окапываемся в SAPE (часть 3)

После нахождения в сети злополучного для всех саповцев сервиса определения продажных ссылок, и даже подняв вокруг него небольшую шумиху на ньюсе2.ру (отдельное спасибо s13 за размещение новости). Я несколько был поражен и озадачен алгоритмом, с помощью которого система, в моем случае, безошибочно определяла автоматически расставленные ссылки. В скором времени я разобрался, что и по чем, тем самым обезопасил свои ресурсы от грозного сервиса с незвучным названием.

Вкратце поясню, принцип работы сервиса для тех, кто в бронетранспортёре.

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

Проще говоря, получая на вход такой линк http://site.ru/, сервис загружает сраницу, затем генерит примерно следующий урл http://site.ru/?vsyakiy_musor=!@#$^%&*() и по нему загружает вторую страницу. Сравнивает их, берет разность по ссылкам и считает ее продажной.

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

Расскажу что я сделал для того чтобы обмануть сервис. Для этого залез в sape.php

С помощью метода тыка и добрался до этого блока.

...  // Убиваем PHPSESSID  if (strlen(session_id())) {    $session = session_name() . '=' . session_id();    $this->_request_uri = str_replace(array('?'.$session,'&'.$session), '', $this->_request_uri);  }...

В данном блоке производится выкашивание из $this->_request_uri идентификатора сессии. И мне показалось данная операция является очень схожей с той которая нам нужна. Только в моем случае надо убивать не только сессию, но и все что приходит после символа ‘?’.

Вдоволь повозившись мануалом по регулярным выражениям в php, через некоторое время добавил следующую строчку.

  $this->_request_uri = preg_replace('/\?\S*/',"",$this->_request_uri);

Сохранил изменения. Проверяю…

Еззз! После этих манипуляций чудо-сервис прекратил определять все автоговнолинки.

Ну что господа?! Кто ещё не в Sape?! Бегом регаться, пока ироды какой-нибудь другой бяки не придумали :)

А чуть не забыл. Хочу предупредить, данное решение работает только на урлах без параметров и/или поверх ЧПУ-ссылок. То есть если сравниваемые урлы будут с параметрами, то задача по противостоянию усложняется в разы. Как я вижу, нужно будет определять все допустимые параметры и с помощью тех же регулярных выражений, но более извращенных, производить их фильтрацию. Но это охрененное усложнение. Лучше и проще, на мой взгляд, юзать mod_rewrite, тем более в популярных движках поддержка ЧПУ-ссылок уже является стандартом де-факто.

Ещё на всякий случай, сниму всю ответственность за неправильное истолкование и использование представленной здесь информации. Короче люди, если что-то у кого-то не заработает – я не виноват. Перед экспериментами советую сделать бэкап скрипта, а лучше всего сайта.

3 из 512345
FeedMaster - Система автонаполнения контентом

О проекте

Bum Я бычок подниму горький дым затяну, люк открою, полезу домой ... (с)
Все о проекте >>>



rss

Читать через Google | Читать через Яндекс | Рассылка почтой