Backup time: bitbucket backup script

Git is decentralised version control system but let’s face it – most likely we use single remote repository. Most likely it’s github or bitbucket.

Some people already have learnt the hard way that backups are necessary even for the thing we believe will never break, because, you know, nothing more permanent than temporary.

Recently I was reviewing my backups of important services and noticed that I don’t really have a repeatable automated way to archive repositories on Bitbucket. Scaring myself of it I immediately rushed to write a script which does so.

So, requirements for the bitbucket backup script:

  • Must work on Linux(or may be even macos) without any extra dependencies. It must work using only bash + git + tar
  • Created archives should be bz2ipped
  • Backup script must not have write access to the repositories
  • It must include all repositories/teams I was contributing to

Read more

Linux: аккуратность использования rm -rf

На случай кто не знает – это РЕКУРСИВНОЕ УДАЛЕНИЕ ВСЕГО БЕЗ ПОДТВЕРЖДЕНИЯ!

Если вам приходиться часто работать с коммандной строкой и удалять папки будьте внимательны. Наверняка каждый использует прокрутку истории комманд(стрелками вверх-вниз) для более быстрой работы в консоле, если ненароком выберите нечто вроде rm -rf ./ ожидая например что будет ifconfig eth0 и по инерции нажмёте <enter> – останется только надеятся что текущая папка не корень и не домашняя. Особенно, если вы работаете под root.

Для себя взял на заметку простое правило: никогда не писать одиночные ./, ../ и тому подобные в аргументе rm -rf , как бы не хотелось, по возможности записывать относительный путь, например apache/www/site – чем больше букв в пути[=сложнее путь], тем меньше вероятности того, что в случае не внимательного ввода вы удалите нужную информацию.

Количество успешных пингов

На винграде был вопрос как узнать количество прошедших пингов.
Вот моё решение в виде скрипта:
[cc lang=”bash” line_numbers=”false”]
rux@ruX-laptop-wifi:~> cat ./pinger.sh
#!/bin/sh
ping $* | grep transmitted | awk ‘{print $4;}’
rux@ruX-laptop-wifi:~> nano pinger.sh
rux@ruX-laptop-wifi:~> ./pinger.sh www.ru -c 3
3
[/cc]
Аргументы программы – обычное агрументы ping
В stdout – одно число – количество прошедших пингов