Tips’n'trips | Homeless In Belarus

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

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 Днем Великой Победы.

Выкидываем сами себя из SERP’a

18 Январь 2008 | В рубриках blogger, tips'n'trips

SEO-оптимизация блоггерского темплейта

Предпосылкой к написанию данного поста явилась статья Бананового Рая. Пересказывать своими словами не буду, лучше сошлюсь на первоисточник с цитированием.

Казалось бы, чем больше страниц в индексе, тем больше посетителей придет на ваш сайт.  Ан нет.  Часто бывает с точностью до наоборот. Вот живой пример. Вы делаете блог на каком-нибудь вордпрессе. Собираете посты по определенным кеям, оптимизируете их, раскладываете по категориям. В общем все по-взрослому. Гугл потиху индексирует ваш сайт,  посетители начинают заходить из серпа, но, вдруг, поток посетителей резко уменьшается, а половина страниц которые вы так упорно позиционировали по своим фразам ушла в саплиментал.  Вы начинаете пристально разглядывать как там в гугле проиндексировался ваш сайт, и к своему ужасу узнаете, что страницы с самими постами ушли в сплиментал, а вместо них в основную выдачу попали списки статей по категориям. Естественно эти списки  в серпе гугла по вашим кеям будут сидеть далеко не на первых местах, и чаще всего даже не на первых страницах.  Вот и получилось, что гугл просто выдавил из основного поиска ваши правильные  страницы, причем выдавил их в пользу ваших же страниц списков категорий. Так что после этого вебмастеру остается только robots.txt править и запрещать гуглю индексировать на вашем сайте что-то в ущерб основным страницам.

Я полагаю всем всё предельно ясно.

Соглашусь с автором статьи по поводу того, что “не стоит отдавать свой сайт просто так на откуп поисковому боту”, так как самолично не раз наблюдал в SERP’e картину, когда архивы по месяцам красовались на топовых позициях, вытесняя из выдачи правильные постовые страницы.

Все бы ничего, поправил robots.txt и спи спокойно, жди когда поисковые боты прочитают правила и примут их на карандаш. Однако прамблема в том, что наш горячо-любимый Blogger не предоставляет доступ к robots.txt.

Ну как говориться, если гора не идет к Магомету, то … попробуем подойти к проблеме с другой стороны. Вариант со сменой хостинга на свой собственный я не рассматриваю, так как смысла в этом я особо не вижу. Если уже менять хостинг, то зачем тогда вообще на Blogger’е оставаться.

Итак, что нам нужно сделать? Правильно. Нам нужно сделать так чтобы страницы архива не индексировались поисковиком, т.е. выкидываем все непотребное из SERP’a. Сделать это можно, через соответствующий мета-тэг:

<meta content='noindex,follow' name='robots'/>

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

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

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

<b:if cond='data:blog.pageType == "archive"'>  <meta content='noindex,follow' name='robots'/><b:else/>  <meta content='all' name='robots'/></b:if>

Через пару недель, архивные страницы полностью ушли из SERP’a, оставив после себя ссылки на правильные посты с осмысленными заголовками.

Вот и сказочке конец, кто прочёл, тому зач0т :)

Оптимизированный H1

8 Декабрь 2007 | В рубриках blogger, blogging, google, tips'n'trips

SEO-оптимизация блоггерского темплейта

В данной статье обозначу несколько рекомендаций по поводу поисковой оптимизации блоггерского шаблона.

Вероятно некоторым известен тот факт, что гугл читает тэг h1, точнее текст обрамленный данным тэгом, - самым главным заголовком страницы. И это означает, что  h1 — очень важный и полезный тэг для брата SEOшника. Однако частое его использование на одной странице не всегда желательно, так как в большинстве случаев, да и по логике, самый главный заголовок на странице должен быть один.

Исходим из вышеописанного утверждения, и принимаем её за неоспоримую условность.

Итак, на странице тэг h1 используем только один раз.

Продолжаем развивать тему.

В большинство представленных на выбор блоггерских темплейтов тэгом h1 обрамлен заголовок блога.  И так на всех страницах блога. То есть гугл помещая в индекс очередную страницу с этого ресурса каждый раз натыкается на один и тот же заголовок. Что в общем-то не есть хорошо. Намного эфективнее и оптимальнее, на мой взляд, было бы сделать следующее: на морде оставить все как есть, то бишь хидером1 обрамляем <h1>заголовок блога</h1>, а на всех остальных страницах <h1>название поста</h1>

Итак, сделаем это на нашем любимом блогспотовском блоге.

Примечание: Все экзекуции я производил исключительно на xml-шаблонах (конкретнее на Stretch Denim Light), так как старые классические html-шаблоны, имхо, потиху отмирают.

Значит так, логиннимся идем в макет править в ручную шаблон. Ищем что-то наподобии этого:

<h1 class='title'>  <b:if cond='data:blog.url == data:blog.homepageUrl'>    <data:title/>  <b:else/>    <a expr:href='data:blog.homepageUrl'><data:title/></a>  </b:if></h1>

Это вывод заголовка блога. Изменяем найденный блок на этот

<b:if cond='data:blog.pageType != "item"'>  <h1 class='title'>    <b:if cond='data:blog.url == data:blog.homepageUrl'>      <data:title/>    <b:else/>      <a expr:href='data:blog.homepageUrl'><data:title/></a>    </b:if>  </h1><b:else/>  <h2 class='title'>    <b:if cond='data:blog.url == data:blog.homepageUrl'>      <data:title/>    <b:else/>      <a expr:href='data:blog.homepageUrl'><data:title/></a>    </b:if>  </h2></b:if>

Здесь просто добавляется дополнительное условие — является страница мордой или нет. Если морда — то заголовок в h1, если нет- в h2.

Дальше проделываем все тоже самое с точностью до наоборот с блоком вывода названия поста. Ищем

<b:if cond='data:post.title'>  <h3 class='post-title'>    <b:if cond='data:post.link'>      <a expr:href='data:post.link'><data:post.title/></a>    <b:else/>      <b:if cond='data:post.url'>        <a expr:href='data:post.url'><data:post.title/></a>      <b:else/>        <data:post.title/>      </b:if>    </b:if>  </h3></b:if>

и заменяем на

<b:if cond='data:post.title'>  <b:if cond='data:blog.pageType == "item"'>    <h1 class='post-title'>        <b:if cond='data:post.url'>          <a expr:href='data:post.url'><data:post.title/></a>        <b:else/>          <data:post.title/>        </b:if>    </h1>  <b:else/>    <h3 class='post-title'>        <b:if cond='data:post.url'>          <a expr:href='data:post.url'><data:post.title/></a>        <b:else/>          <data:post.title/>        </b:if>    </h3>  </b:if></b:if>

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

h1.title, h2.title {  line-height: 1.4em;  font-size: 150%;}h1.post-title, h3.post-title {  line-height: 1.2em;  font-size: 100%;}

Всё. Сохраняем темплэйт и проверяем все ли работает так как надо.

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

ту би континуед …

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

О проекте

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



rss

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