Tuesday, June 19, 2012

Бэкап FreeBSD-слайса на удаленную машину

Понадобилось слить данные с ноутбука с установленной FreeBSD: два слайса, примонтированные в /var и /usr. Рабочее решение:


  1. Загружаемся с линуксового Live-CD. В моем случае на ноутбуке уже был установлен Linux в одном из разделов, поэтому я загрузил его.

  2. Находим файлы устройств для нужных слайсов, например пробным монтированием. В моем случае это были /dev/sda9 и /dev/sda11.

  3. Дампим слайс с помощью dd и копируем на удаленную машину через ssh:

    dd if=/dev/sda9 |
    ssh -c blowfish user@host "dd of=var.img"

  4. В линуксе примонтировать полученный файл можно следующей командой:


    mount -r -t ufs -o loop,ufstype=ufs2 var.img /mnt

Sunday, June 10, 2012

svn: как удалить N последних ревизий из репозитория

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

# mv repo repo.bak
# svnadmin create repo
# svnadmin dump -r 0:9999 repo.bak | svnadmin load repo


Клиентам, которые уже скачали себе эти ревизии, необходимо заново сделать checkout.

Если же доступа непосредственно к файлам репозитория нет, единственный вариант - это откатить сделанные изменения, создав еще один коммит. Это можно сделать с помощью команды svn merge с указанием ревизий в обратном порядке, e.g.

$ svn merge --revision 303:302 ^/calc/trunk
$ svn commit -m "Undoing change committed in r303."