apt-get install -y debsums
debsums -s
Sunday, 27 April 2014
Как проверить все бинарные файлы на Debian на предмет идентичности их версиям предоставляемым в пакетном менеджере?
Saturday, 26 April 2014
GNU parallel - решение Ваших проблем с многопоточностью в Bash
http://www.gnu.org/software/parallel/
Для дебияна есть одноименный пакет, а вот у Центосов с этим плохо :(
Для дебияна есть одноименный пакет, а вот у Центосов с этим плохо :(
Friday, 25 April 2014
Работа с Atlassian Confluence из командной строки CLI
Для начала нужно скачать тулкит: https://bobswift.atlassian.net/wiki/display/CSOAP/Downloads
Нам нужен: atlassian-cli-3.9.0-SNAPSHOT-distribution.zip
Потом в Global Configuration Confluence ставим флаг "Remote API (XML-RPC & SOAP)".
Потом распаковываем архив atlassian-cli- и открываем редактором vim atlassian.sh и прописываем в нем user/password для доступа к вики (предварительно вы должны создать пользователя вики с правами доступа по АПИ).
И вот такой командой можно сделать экспорт спейса:
Обращаю внимание, что напоролся на дикий баг:
Нам нужен: atlassian-cli-3.9.0-SNAPSHOT-distribution.zip
Потом в Global Configuration Confluence ставим флаг "Remote API (XML-RPC & SOAP)".
Потом распаковываем архив atlassian-cli- и открываем редактором vim atlassian.sh и прописываем в нем user/password для доступа к вики (предварительно вы должны создать пользователя вики с правами доступа по АПИ).
И вот такой командой можно сделать экспорт спейса:
./confluence.sh --server http://corp.wiki.domain.ru:8080 --user USER --password XXXXX --action exportSpace --space space_name --exportType HTML --file export.zipА вот официальная документация: https://bobswift.atlassian.net/wiki/display/CSOAP/Examples
Обращаю внимание, что напоролся на дикий баг:
#Client error: Bad response code (403) received trying to retrieve data from URL: https://wiki.fv.ee/download/temp/htmlexport-20140425-141751-20/Confluence-space-export-141753-21.html.zipНо сделал для него work around! Кому нужно - прошу в личку =)
#org.swift.common.cli.CliClient$ClientException: Bad response code (403) received trying to retrieve data from URL: https://wiki.fv.ee/download/temp/htmlexport-20140425-141751-20/Confluence-space-export-141753-21.html.zip
# at org.swift.common.cli.CliUtils.copyUrlToFile(CliUtils.java:214)
# at org.swift.confluence.cli.ConfluenceClient.exportSpace(ConfluenceClient.java:5610)
# at org.swift.confluence.cli.ConfluenceClient.handleRequest(ConfluenceClient.java:675)
# at org.swift.common.cli.AbstractRemoteClient.process(AbstractRemoteClient.java:124)
# at org.swift.common.cli.CliClient.doWork(CliClient.java:393)
# at org.swift.confluence.cli.ConfluenceClient.main(ConfluenceClient.java:150)
Thursday, 24 April 2014
Courgette - супер эффективный алгоритм дельта-сжатия для бинарных исполняемых файлов
http://neugierig.org/software/chromium/notes/2009/05/courgette.html
Да, инженеры Google нереально просто круты!
Да, инженеры Google нереально просто круты!
Wednesday, 23 April 2014
Как в Nginx логгировать тела POST запросов?
Прописываем в кастом конфиг переменной $request_body при выкрученном буфере client_body_buffer_size 1m результата не дает. В логе прочерки, куда копать?
Где хранит свои сессии ISPManager?
Как можно догадаться, как при работе по API (mgrctl -m ispmgr session.newkey username=root key=$key), так и при работе через веб ISPManager поддерживает свои сессии. В которых лежит секретный код (в случае веба - хранится в куке), который позволяет входить пользователю без пароля пока действительна его сессия.
Путем отладки через starce нашел, что этот файлик вот тут:
Путем отладки через starce нашел, что этот файлик вот тут:
/usr/local/ispmgr/var/.ispmgr.sesНо вот его формат не понятен, хотя скоро, уверен, я его вскрою и выложу концепт :) Формат у него страшный и бинарный =)
Monday, 21 April 2014
Как в HTOP увидеть разделение по номерам контейнеров OpenVZ?
Итак, нужен CentOS 6 + htop.
Запускаем, жмем shift+s, в левом столбце выбираем: Columns, потом на вкладке Available Columns выбираем CTID (он в самом низу), жмем Enter. После этого выходим из конфигурации, выжимая Esc.
Вуаля:
Спасибо за наводку: http://poiuty.com
Запускаем, жмем shift+s, в левом столбце выбираем: Columns, потом на вкладке Available Columns выбираем CTID (он в самом низу), жмем Enter. После этого выходим из конфигурации, выжимая Esc.
Вуаля:
Спасибо за наводку: http://poiuty.com
Thursday, 17 April 2014
librsync и утилита rdiff - все что Вы НЕ знали о резервном копировании
Данный пакет утилит крайне полезен. Чем? В первую очередь, очень высоким в отличие от rsync уровнем контроля за тем, что же делается :)
Вот, например, мы можем взять 8 гигабайтный бинарный файл (созданный из данных за 8е апреля) и сгенерировать для него signature файл вот так:
Займет он при этом 47 мегабайт всего-то. Что такое signature файл? Грубо говоря, это файл с полной информацией о блоках данного файла и их хэш суммах. Для чего это может понадобится? Об этом позже.
Итак, допустим у нас есть актуальная (за 18е апреля) копия данного файла (это НЕ архив, это просто большой файл с бинарными данными).
Итак, мы хотим сделать бинарный патч между версией от 8е апреля и версией за 18е. Нужен ли нам весь 8гб дамп за 8е апреля? Не-а :) Достаточного его signature файла!
Итак, создаем инкрементальный бэкап не имея полного бэкапа на руках (вообще!):
И на выходе мы получим дельта-файл между бэкапами за 8е и 18е апреля :)
Но есть одно но, ОН ОЧЕНЬ МЕДЛЕННЫЙ:
Теперь попробуем обратный процесс создание полного бэкапа за 18е апреля из дельты + бэкапа за 8е.
Эти тесты я не уверен, что проведу сегодня, так что пока сделаем лишь чексуммы:
Вот, например, мы можем взять 8 гигабайтный бинарный файл (созданный из данных за 8е апреля) и сгенерировать для него signature файл вот так:
time rdiff signature 56640_root_hdd.gz_84cab040-bed0-11e3-b5aa-80259087d80c /root/56640.signature
real 0m42.922s
user 0m34.305s
sys 0m2.209s
Займет он при этом 47 мегабайт всего-то. Что такое signature файл? Грубо говоря, это файл с полной информацией о блоках данного файла и их хэш суммах. Для чего это может понадобится? Об этом позже.
Итак, допустим у нас есть актуальная (за 18е апреля) копия данного файла (это НЕ архив, это просто большой файл с бинарными данными).
Итак, мы хотим сделать бинарный патч между версией от 8е апреля и версией за 18е. Нужен ли нам весь 8гб дамп за 8е апреля? Не-а :) Достаточного его signature файла!
Итак, создаем инкрементальный бэкап не имея полного бэкапа на руках (вообще!):
time rdiff delta /root/56640.signature /vz/tmp/56640.hdd /vz/tmp/56640_diff_between_8_and_18_april.rdiff
И на выходе мы получим дельта-файл между бэкапами за 8е и 18е апреля :)
Но есть одно но, ОН ОЧЕНЬ МЕДЛЕННЫЙ:
real 13m27.094sНо при этом бесконечно радует размер файла инкремента:
user 13m14.457s
sys 0m9.089s
ls -alh /vz/tmp/56640_diff_between_8_and_18_april.rdiff
-rw-r--r-- 1 root root 447M Апр 18 00:37 /vz/tmp/56640_diff_between_8_and_18_april.rdiff
Теперь попробуем обратный процесс создание полного бэкапа за 18е апреля из дельты + бэкапа за 8е.
Эти тесты я не уверен, что проведу сегодня, так что пока сделаем лишь чексуммы:
sha1sum /vz/tmp/56640.hddТакже об ускорении. Решил попробовать увеличить блок обработки до 1 мегабайта. Для этого нужно регенерировать signatures файл:
1580e28b7c23f390e02c30d62f10971a77b9ace8 /vz/tmp/56640.hdd
rdiff --statistics --block-size=1048576 signature 56640_root_hdd.gz_84cab040-bed0-11e3-b5aa-80259087d80c /root/56640.signatureЗапускаем создание дельты снова:
time rdiff --statistics --block-size=1048576 delta /root/56640.signature /vz/tmp/56640.hdd /vz/tmp/56640_diff_between_8_and_18_april.rdiffОн сразу сообщит, что используется на порядок меньше блоков (стандартный блок - 2048 байт):
rdiff: loadsig statistics: signature[7938 blocks, 1048576 bytes per block]Ура! Победа :)
real 2m30.670sНо не во всем, сам дельта файл оказался крайне огромный:
user 2m17.618s
sys 0m10.665s
ls -alh /vz/tmp/56640_diff_between_8_and_18_april.rdiffТак что с оптимизацией тут нужно быть поосторожнее :(
-rw-r--r-- 1 root root 3,9G Апр 18 01:26 /vz/tmp/56640_diff_between_8_and_18_april.rdiff
Wednesday, 16 April 2014
Как импортировать исходный код OpenVZ в GIT для удобной навигациии по коду и контроля за изменениями в коде?
Я уже положил код актуального ядра в Git для удобства: https://github.com/pavel-odintsov/openvz_rhel6_kernel_mirror
Вот так:
P.S. OpenVZ team, я знаю, что Вы меня временами читаете, пожалуйста, сделайте хотя бы по релизным версиям git репо =)
Вот так:
cd /usr/srcПосле этого нужно внести правки:
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab108.1/vzkernel-2.6.32-042stab108.1.src.rpm
rpm -ihv vzkernel-2.6.32-042stab108.1.src.rpm
yum install -y rpm-build redhat-rpm-config unifdef # необходимы для патчей
yum install -y patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel elfutils-devel newt-devel python-devel bison flex hmaccalc binutils-devel audit-libs-devel
cd /root/rpmbuild/SPECS/
vim kernel.specНакладываем патчи:
выпиливаем там: перл модуль на который ругается rpmbuild: ExtUtils::Embed
rpmbuild -bp kernel.specА если делается обновление, то обновить файлы в репо можно так:
cd /root/rpmbuild/BUILD/kernel-2.6.32-504.16.2.el6/linux-2.6.32-042stab108.1
git init
git add --all
git commit -m "Initial Commit"
git remote add origin ssh:/путь к вашему репо.git
git push origin master
/bin/cp -R * /usr/src/openvz_rhel6_kernel_mirror/
P.S. OpenVZ team, я знаю, что Вы меня временами читаете, пожалуйста, сделайте хотя бы по релизным версиям git репо =)
Monday, 14 April 2014
Monday, 7 April 2014
Как в терминале Open Indiana убрать A B C D при использовании стрелок?
Проще простого:
echo "set nocompatible" > /root/.vimrc
Wednesday, 2 April 2014
Огромная разница в скорости выполнения sha1sum и openssl sha1, откуда и почему?
В процессе отладки нашего бэкап решения обратил внимание, что хэш функции стали потреблять много процессорного времени и совершенно случайно обнаружил следующее:
Да, тесты проведены корректно, до запуска хэширования страничный кэш Linux был прогрет и все тесты были проведены по 3-5 раз со сходными результатами.
[root@technode4 ~]# time sha1sum /vz/private/7803/root.hdd/root.hdd
c41be08852baed71294623ea27ec7f64a3ac117f /vz/private/7803/root.hdd/root.hdd
real 1m1.632s
user 0m59.987s
sys 0m1.663s
[root@technode4 ~]# time openssl sha1 /vz/private/7803/root.hdd/root.hddТо есть, типовая/привычная/понятная sha1sum, используемся везде и вся откровенный тормоз. Почему?
SHA1(/vz/private/7803/root.hdd/root.hdd)= c41be08852baed71294623ea27ec7f64a3ac117f
real 0m17.130s
user 0m16.035s
sys 0m1.093s
Да, тесты проведены корректно, до запуска хэширования страничный кэш Linux был прогрет и все тесты были проведены по 3-5 раз со сходными результатами.
Subscribe to:
Posts
(
Atom
)