<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Siava.Su &#187; Linux</title>
	<atom:link href="http://siava.su/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://siava.su</link>
	<description>черновик сисадмина</description>
	<lastBuildDate>Thu, 24 Nov 2011 09:36:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>nginx + perl / cgi</title>
		<link>http://siava.su/2011/05/30/nginx-perl-cgi/</link>
		<comments>http://siava.su/2011/05/30/nginx-perl-cgi/#comments</comments>
		<pubDate>Mon, 30 May 2011 10:07:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[mini-httpd]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://siava.su/?p=245</guid>
		<description><![CDATA[На днях столкнулся с задачей выполнения perl-скриптов на веб-сервере под управлением nginx. Решение нашлось довольно быстро, делюсь с вами :) Имеем: Debian Linux nginx в режиме FastCGI + php Требуется: добавить поддержку perl / cgi в директории cgi-bin Ну не Apache же ставить ради такой ерунды :) Для этого подойдёт быстрый и лёгкий веб-сервер mini-httpd. [...]]]></description>
			<content:encoded><![CDATA[<p>На днях столкнулся с задачей выполнения perl-скриптов на веб-сервере под управлением nginx. Решение нашлось довольно быстро, делюсь с вами :)</p>
<p><span id="more-245"></span><strong>Имеем:</strong></p>
<ul>
<li>Debian Linux</li>
<li>nginx в режиме FastCGI + php</li>
</ul>
<p><strong>Требуется:</strong></p>
<ul>
<li>добавить поддержку perl / cgi в директории cgi-bin</li>
</ul>
<p>Ну не Apache же ставить ради такой ерунды :) Для этого подойдёт быстрый и лёгкий веб-сервер <a rel="nofollow" target="_blank" href="http://www.acme.com/software/mini_httpd/" >mini-httpd</a>.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">apt<span class="sy0">-</span>get install mini<span class="sy0">-</span>httpd</pre></div></div></div></div></div></div></div>


<p>Редактируем файл конфигурации /etc/mini-httpd.conf. Я изменил там лишь 3 строки:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">port<span class="sy0">=</span><span class="nu0">9001</span>
user<span class="sy0">=</span>www<span class="sy0">-</span>data
data_dir<span class="sy0">=/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>site.<span class="me1">ru</span></pre></div></div></div></div></div></div></div>


<p>Затем, в /etc/default/mini-httpd разрешаем автоматическую загрузку этого веб-сервера:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">START<span class="sy0">=</span><span class="nu0">1</span></pre></div></div></div></div></div></div></div>


<p>И запускаем его:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="sy0">/</span>etc<span class="sy0">/</span>init.<span class="me1">d</span><span class="sy0">/</span>mini<span class="sy0">-</span>httpd start</pre></div></div></div></div></div></div></div>


<p>Теперь настроим nginx, чтобы при обращении к perl / cgi &#8211; скриптам он проксировал запросы на mini-httpd. В файле конфигурации nginx в секции server добавляем следующий location:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">server <span class="br0">&#123;</span>
&nbsp;
....
&nbsp;
	<span class="me1">location</span> ~ \.<span class="me1">pl</span>$ <span class="br0">&#123;</span>
		root   <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>site.<span class="me1">ru</span><span class="sy0">/</span>cgi<span class="sy0">-</span>bin<span class="sy0">;</span>
		gzip off<span class="sy0">;</span>
		proxy_pass    http<span class="sy0">:</span><span class="co1">//127.0.0.1:9001;</span>
	<span class="br0">&#125;</span>
&nbsp;
....
&nbsp;
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>Перезапускаем nginx и готово! :)</p>
<p>P.S.<br />
Чтобы работала авторизация и куки, в location также можно добавить вот эти параметры:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">set                     $referer        $http_referer<span class="sy0">;</span>
proxy_set_header        Referer         $referer<span class="sy0">;</span>
proxy_set_header        X<span class="sy0">-</span>Real<span class="sy0">-</span>IP       $remote_addr<span class="sy0">;</span>
proxy_set_header        Host            localhost<span class="sy0">:</span><span class="nu0">9001</span><span class="sy0">;</span>
proxy_set_header        REQUEST_METHOD  $request_method<span class="sy0">;</span>
proxy_set_header        REMOTE_USER     $remote_user<span class="sy0">;</span>
proxy_set_header        REMOTE_ADDR     $remote_addr<span class="sy0">;</span>
proxy_set_header        SERVER_NAME     localhost<span class="sy0">;</span>
proxy_set_header        SERVER_PORT     <span class="nu0">9001</span><span class="sy0">;</span>
proxy_set_header        HTTP_COOKIE     $http_cookie<span class="sy0">;</span></pre></div></div></div></div></div></div></div>


<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2011/05/30/nginx-perl-cgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка и настройка потокового Icecast2 + ices0 сервера в Debian</title>
		<link>http://siava.su/2011/02/18/icecast2-ices0-debian/</link>
		<comments>http://siava.su/2011/02/18/icecast2-ices0-debian/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 12:40:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[icecast2]]></category>
		<category><![CDATA[ices0]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[потоковое вещание]]></category>
		<category><![CDATA[радио]]></category>

		<guid isPermaLink="false">http://siava.su/?p=174</guid>
		<description><![CDATA[Предыстория :) Был великий и ужасный Slackware. И работал на нём Icecast сервер, настроенный следующим образом. И всё было хорошо. Но пришло время ставить Debian.. Итак, на тот момент под руками оказался Debian Lenny. Кстати, Squeeze был уже на подходе, но переходить до выхода релиза не хотелось. Но это не важно, так как всё что [...]]]></description>
			<content:encoded><![CDATA[<p>Предыстория :)</p>
<p>Был великий и ужасный Slackware. И работал на нём <a href="http://siava.ru/forum/faq37.html" target="_blank">Icecast сервер, настроенный следующим образом</a>. И всё было хорошо. Но пришло время ставить Debian..</p>
<p><span id="more-174"></span></p>
<p>Итак, на тот момент под руками оказался Debian Lenny. Кстати, Squeeze был уже на подходе, но переходить до выхода релиза не хотелось. Но это не важно, так как всё что описано ниже должно запуститься и под Debian Squeeze.</p>
<h2>Устанавливаем Icecast2:</h2>
<p>В список репозиториев /etc/apt/sources.list добавьте мультимедиа репозиторий Debian, если у вас его нет, так как некоторые пакеты будут устанавливаться оттуда:</p>
<p>для squeeze:<br />
deb http://mirror.yandex.ru/debian-multimedia/ squeeze main</p>
<p>для lenny:<br />
deb http://mirror.yandex.ru/debian-multimedia/ lenny main</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">apt<span class="sy0">-</span>get update</pre></div></div></div></div></div></div></div>




<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">apt<span class="sy0">-</span>get install icecast2</pre></div></div></div></div></div></div></div>


<p>Автоматически будет созданы учётная запись, файл конфигурации и прочее. Для того, чтобы icecast запустился, необходимо в /etc/default/icecast2 установить значение:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">ENABLE<span class="sy0">=</span><span class="kw2">true</span></pre></div></div></div></div></div></div></div>


<p>Отредактируем файл конфигурации /etc/icecast2/icecast.xml</p>
<p>Если выкинуть всю воду и лишние комментарии, то получилось следующее:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="apache"><pre class="de1">&lt;icecast&gt;
	&lt;limits&gt;
        &lt;clients&gt;<span class="nu0">100</span>&lt;/clients&gt;
        &lt;sources&gt;<span class="nu0">2</span>&lt;/sources&gt;
        &lt;threadpool&gt;<span class="nu0">5</span>&lt;/threadpool&gt;
        &lt;queue-size&gt;<span class="nu0">524288</span>&lt;/queue-size&gt;
        &lt;client-timeout&gt;<span class="nu0">30</span>&lt;/client-timeout&gt;
        &lt;header-timeout&gt;<span class="nu0">15</span>&lt;/header-timeout&gt;
        &lt;source-timeout&gt;<span class="nu0">10</span>&lt;/source-timeout&gt;
        &lt;burst-on-connect&gt;<span class="nu0">1</span>&lt;/burst-on-connect&gt;
        &lt;burst-size&gt;<span class="nu0">165535</span>&lt;/burst-size&gt;
    &lt;/limits&gt;
&nbsp;
    &lt;authentication&gt;
        &lt;source-password&gt;password&lt;/source-password&gt;
        &lt;relay-password&gt;password&lt;/relay-password&gt;
        &lt;admin-user&gt;admin&lt;/admin-user&gt;
        &lt;admin-password&gt;password&lt;/admin-password&gt;
    &lt;/authentication&gt;
&nbsp;
    &lt;hostname&gt;siava.ru&lt;/hostname&gt;
&nbsp;
    &lt;listen-socket&gt;
        &lt;port&gt;<span class="nu0">8000</span>&lt;/port&gt;
    &lt;/listen-socket&gt;
&nbsp;
    &lt;fileserve&gt;<span class="nu0">1</span>&lt;/fileserve&gt;
    &lt;paths&gt;
        &lt;basedir&gt;/usr/share/icecast2&lt;/basedir&gt;
        &lt;logdir&gt;/var/log/icecast2&lt;/logdir&gt;
        &lt;webroot&gt;/usr/share/icecast2/web&lt;/webroot&gt;
        &lt;adminroot&gt;/usr/share/icecast2/admin&lt;/adminroot&gt;
        &lt;pidfile&gt;/usr/share/icecast2/icecast.pid&lt;/pidfile&gt;
        &lt;<span class="kw1">alias</span> source=<span class="st0">&quot;/&quot;</span> dest=<span class="st0">&quot;/status.xsl&quot;</span>/&gt;
    &lt;/paths&gt;
&nbsp;
    &lt;logging&gt;
        &lt;accesslog&gt;access.log&lt;/accesslog&gt;
        &lt;errorlog&gt;error.log&lt;/errorlog&gt;
      	&lt;loglevel&gt;<span class="nu0">4</span>&lt;/loglevel&gt; &lt;!-- <span class="nu0">4</span> Debug, <span class="nu0">3</span> Info, <span class="nu0">2</span> Warn, <span class="nu0">1</span> Error --&gt;
      	&lt;logsize&gt;<span class="nu0">10000</span>&lt;/logsize&gt; &lt;!-- Max size of a logfile --&gt;
    &lt;/logging&gt;
&nbsp;
    &lt;security&gt;
        &lt;chroot&gt;<span class="nu0">0</span>&lt;/chroot&gt;
        &lt;changeowner&gt;
            &lt;user&gt;icecast2&lt;/user&gt;
            &lt;group&gt;icecast&lt;/group&gt;
        &lt;/changeowner&gt;
    &lt;/security&gt;
&lt;/icecast&gt;</pre></div></div></div></div></div></div></div>


<p><em>(текст конфига желательно должен иметь кодировку utf8)</em></p>
<p>Теперь можно запустить Icecast2 командой:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="sy0">/</span>etc<span class="sy0">/</span>init.<span class="me1">d</span><span class="sy0">/</span>icecast2 start</pre></div></div></div></div></div></div></div>


<p>Давайте разберёмся как направить на Icecast2 аудиопоток.</p>
<h2>Установка ices0</h2>
<p>Я не сторонник перехвата чужих потоков, а хочу воспроизводить собственную коллекцию mp3 файлов. Поэтому, для таких целей понадобится ices. Но не тот, что имеется в репозитории Debian (ices2), а ices0. Так как ices2 воспроизводит только ogg-файлы (насколько я понял), а мне надо mp3.</p>
<p>К сожалению, ices0 отсутствует в репозитории, поэтому будем его собирать вручную. Однако, для сборки вручную надо подготовиться. Для этого установим следующее:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">apt<span class="sy0">-</span>get install build<span class="sy0">-</span>essential</pre></div></div></div></div></div></div></div>


<p>Также, нам потребуются библиотеки libshout3 и libxml2:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">apt<span class="sy0">-</span>get install libshout3<span class="sy0">-</span>dev libxml2<span class="sy0">-</span>dev</pre></div></div></div></div></div></div></div>


<p>И ещё, для поддержки mp3 файлов потребуются библиотеки libmp3lame0. У меня не получилось их установить прямо из репозитория, поэтому ставил самостоятельно:</p>
<p><em>для 32-битных систем:</em></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">wget http<span class="sy0">:</span><span class="co1">//debian-multimedia.org/pool/main/l/lame/libmp3lame0_3.98.4-0.0_i386.deb</span>
wget http<span class="sy0">:</span><span class="co1">//debian-multimedia.org/pool/main/l/lame/libmp3lame-dev_3.98.4-0.0_i386.deb</span></pre></div></div></div></div></div></div></div>


<p><em>или для 64-битных:</em></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">wget http<span class="sy0">:</span><span class="co1">//debian-multimedia.org/pool/main/l/lame/libmp3lame0_3.98.4-0.0_amd64.deb</span>
wget http<span class="sy0">:</span><span class="co1">//debian-multimedia.org/pool/main/l/lame/libmp3lame-dev_3.98.4-0.0_amd64.deb</span></pre></div></div></div></div></div></div></div>




<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">dpkg <span class="sy0">-</span>i libmp3lame0_3.98.4<span class="sy0">-</span><span class="nu16">0.0</span>_i386.<span class="me1">deb</span>
dpkg <span class="sy0">-</span>i libmp3lame<span class="sy0">-</span>dev_3.98.4<span class="sy0">-</span><span class="nu16">0.0</span>_i386.<span class="me1">deb</span></pre></div></div></div></div></div></div></div>


<p><em>(для 64-битной аналогично)</em></p>
<p>Всё готово для сборки ices0.</p>
<p>Скачиваем исходники:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">wget http<span class="sy0">:</span><span class="co1">//downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz</span></pre></div></div></div></div></div></div></div>


<p>распаковываем:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">tar <span class="sy0">-</span>xf ices<span class="sy0">-</span><span class="nu16">0.4</span>.<span class="me1">tar</span>.<span class="me1">gz</span></pre></div></div></div></div></div></div></div>


<p>и переходим в директорию с исходниками ices0:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">cd ices<span class="sy0">-</span><span class="nu16">0.4</span></pre></div></div></div></div></div></div></div>


<p>выполняем конфигурирование:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">.<span class="sy0">/</span>configure <span class="sy0">--</span>with<span class="sy0">-</span>lame</pre></div></div></div></div></div></div></div>


<p>и сборку с установкой:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">make <span class="sy0">&amp;</span> make install</pre></div></div></div></div></div></div></div>


<p>Готово! ices0 установлен. Теперь выполним его конфигурацию. Кстати, а надо ли? :) Я не уверен, но на всякий случай состряпал следующий конфиг. /usr/local/etc/ices.conf:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="apache"><pre class="de1">&lt;?xml version=<span class="st0">&quot;1.0&quot;</span>?&gt;
&lt;ices:Configuration xmlns:ices=<span class="st0">&quot;http://www.icecast.org/projects/ices&quot;</span>&gt;
  &lt;Playlist&gt;
    &lt;File&gt;playlist.txt&lt;/File&gt;
    &lt;Randomize&gt;<span class="nu0">1</span>&lt;/Randomize&gt;
    &lt;Type&gt;builtin&lt;/Type&gt;
    &lt;Module&gt;ices&lt;/Module&gt;
  &lt;/Playlist&gt;
&nbsp;
  &lt;Execution&gt;
    &lt;Background&gt;<span class="nu0">1</span>&lt;/Background&gt;
    &lt;Verbose&gt;<span class="nu0">0</span>&lt;/Verbose&gt;
    &lt;BaseDirectory&gt;/usr/share/icecast2&lt;/BaseDirectory&gt;
  &lt;/Execution&gt;
&nbsp;
  &lt;Stream&gt;
    &lt;Server&gt;
      &lt;Hostname&gt;siava.ru&lt;/Hostname&gt;
      &lt;Port&gt;<span class="nu0">8000</span>&lt;/Port&gt;
      &lt;Password&gt;password&lt;/Password&gt;
      &lt;Protocol&gt;http&lt;/Protocol&gt;
    &lt;/Server&gt;
&nbsp;
  &lt;/Stream&gt;
&lt;/ices:Configuration&gt;</pre></div></div></div></div></div></div></div>


<p><em>(текст конфига желательно должен иметь кодировку utf8)</em></p>
<h2>Финальные штрихи</h2>
<p>Составим плейлист для ices0:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">find <span class="sy0">/</span>var<span class="sy0">/</span>ftp<span class="sy0">/</span>music<span class="sy0">/</span> <span class="sy0">-</span>name <span class="st0">'*.mp3'</span> <span class="sy0">-</span>exec echo <span class="st0">'{}'</span> \<span class="sy0">;</span> <span class="sy0">&gt;</span>  <span class="sy0">/</span>usr<span class="sy0">/</span>share<span class="sy0">/</span>icecast2<span class="sy0">/</span>playlist.<span class="me1">txt</span></pre></div></div></div></div></div></div></div>


<p>И запустим аудиопоток:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">su icecast2 <span class="sy0">-</span>c <span class="st0">&quot;ices -c '/usr/local/etc/ices.conf' <span class="es1">\
</span>-D '/var/log/icecast2/' -F '/usr/share/icecast2/playlist.txt' <span class="es1">\
</span>-m 'radio' -u 'http://siava.ru:8000/radio.m3u' -d 'Music' <span class="es1">\
</span>-n 'Siava.Ru Music' -g 'All' -b 128 -B -r&quot;</span></pre></div></div></div></div></div></div></div>


<p>Вот и всё :)<br />
Перепечатка только с указанием ссылки на источник. (c) Siava.Ru<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2011/02/18/icecast2-ices0-debian/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Растущий HDD Load Cycle Count в Ubuntu или частые щелчки при работе от батареи</title>
		<link>http://siava.su/2010/12/21/load-cycle-count-in-ubuntu-linux/</link>
		<comments>http://siava.su/2010/12/21/load-cycle-count-in-ubuntu-linux/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 12:55:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[acpi]]></category>
		<category><![CDATA[hdd]]></category>
		<category><![CDATA[hdparm]]></category>
		<category><![CDATA[load cycle count]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[диск]]></category>

		<guid isPermaLink="false">http://siava.su/?p=143</guid>
		<description><![CDATA[Если на вашем ноутбуке/нетбуке установлен Ubuntu Linux или его разновидности, то возможно, что при работе от батареи система будет слишком часто останавливать и снова стартовать жёсткий диск в целях энергосбережения. Одно дело, если диск выключается через минут 5 неактивности, но когда он дёргается по несколько раз в минуту &#8211; это только приведёт к тому, что [...]]]></description>
			<content:encoded><![CDATA[<p>Если на вашем ноутбуке/нетбуке установлен Ubuntu Linux или его разновидности, то возможно, что при работе от батареи система будет слишком часто останавливать и снова стартовать жёсткий диск в целях энергосбережения. Одно дело, если диск выключается через минут 5 неактивности, но когда он дёргается по несколько раз в минуту &#8211; это только приведёт к тому, что диск быстрее выйдет из строя. Поэтому исправим эту ситуацию.</p>
<p><span id="more-143"></span></p>
<p>Во-первых, понаблюдаем происходят ли частые парковки диска. Для этого, во время работы ноутбука от батареи, откройте консоль и выполните:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">sudo smartctl <span class="sy0">--</span>all <span class="sy0">/</span>dev<span class="sy0">/</span>sda <span class="sy0">|</span> grep <span class="sy0">-</span>i load_cycle</pre></div></div></div></div></div></div></div>


<p>Повторите эту команду через пару минут. Если значение <strong>Load Cycle Count</strong> за это время прибавится, значит проблема имеется. Поэтому, в <strong>/etc/pm/power.d/</strong> создаём файл с именем <strong>95hdparm-apm</strong> следующего содержания:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2">#!/bin/sh</span>
hdparm <span class="sy0">-</span>B <span class="nu0">254</span> <span class="sy0">/</span>dev<span class="sy0">/</span>sda</pre></div></div></div></div></div></div></div>


<p>Сохраняем его и устанавливаем права на запуск:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">sudo chmod u<span class="sy0">+</span>rwx<span class="sy0">,</span>g<span class="sy0">+</span>rx<span class="sy0">,</span>o<span class="sy0">+</span>rx <span class="sy0">/</span>etc<span class="sy0">/</span>pm<span class="sy0">/</span>power.<span class="me1">d</span><span class="sy0">/</span>95hdparm<span class="sy0">-</span>apm</pre></div></div></div></div></div></div></div>


<p>Перезагружаемся и проверяем работу. Для этого выполните команду:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1">sudo hdparm <span class="sy0">-</span>I <span class="sy0">/</span>dev<span class="sy0">/</span>sda <span class="sy0">|</span> grep <span class="sy0">-</span>i <span class="st0">&quot;Advanced power management level&quot;</span></pre></div></div></div></div></div></div></div>


<p>Если результат равен <strong>254</strong>, значит всё корректно :)<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2010/12/21/load-cycle-count-in-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перенос пользователей Samba из smbpasswd в passdb.tdb</title>
		<link>http://siava.su/2010/11/17/samba-smbpasswd-to-passdb/</link>
		<comments>http://siava.su/2010/11/17/samba-smbpasswd-to-passdb/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 13:40:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[passdb.tdb]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[smbpasswd]]></category>

		<guid isPermaLink="false">http://siava.su/?p=134</guid>
		<description><![CDATA[Случилось однажды глобальное обновление системы и вместе с другими приложениями обновилась Samba. Новая версия, 3.5.5, почему-то отказалась использовать файл пользователей с их паролями /etc/samba/private/smbpasswd. Оказывается, что все пользователи теперь записываются в новый файл /etc/samba/private/passdb.tdb, а при обновлении никакой конвертации или переноса не произошло. Через 10 минут поиска и чтения был найден очень простой инструмент. Перенос [...]]]></description>
			<content:encoded><![CDATA[<p>Случилось однажды глобальное обновление системы и вместе с другими приложениями обновилась Samba. Новая версия, 3.5.5, почему-то отказалась использовать файл пользователей с их паролями /etc/samba/private/smbpasswd.</p>
<p><span id="more-134"></span>Оказывается, что все пользователи теперь записываются в новый файл /etc/samba/private/passdb.tdb, а при обновлении никакой конвертации или переноса не произошло. Через 10 минут поиска и чтения был найден очень простой инструмент. Перенос пользовательских данных происходит одной простой командой:</p>
<p><em>root@server:/etc/samba/private#</em> <strong>pdbedit -i smbpasswd</strong></p>
<p>Надеюсь, кому-нибудь пригодится :)<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2010/11/17/samba-smbpasswd-to-passdb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Копируем сайт на диск</title>
		<link>http://siava.su/2010/10/25/site-offline-copy-to-disk/</link>
		<comments>http://siava.su/2010/10/25/site-offline-copy-to-disk/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 13:06:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[CD]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[DVD]]></category>
		<category><![CDATA[offline]]></category>
		<category><![CDATA[web site]]></category>
		<category><![CDATA[копировать сайт]]></category>
		<category><![CDATA[копия]]></category>
		<category><![CDATA[оффлайн]]></category>

		<guid isPermaLink="false">http://siava.su/?p=128</guid>
		<description><![CDATA[Копия сайта может пригодится в разных случаях, например для записи на CD/DVD в виде рекламной продукции, либо в тех случаях, когда под рукой нет Интернета, либо для конвертации динамического сайта в статический. Как же удобней всего сделать такую копию? Есть как минимум 2 способа, используя обычную консоль: Первый способ, используя стандартный wget: # wget -rEkp [...]]]></description>
			<content:encoded><![CDATA[<p>Копия сайта может пригодится в разных случаях, например для записи на CD/DVD в виде рекламной продукции, либо в тех случаях, когда под рукой нет Интернета, либо для конвертации динамического сайта в статический. Как же удобней всего сделать такую копию? Есть как минимум 2 способа, используя обычную консоль:</p>
<p><span id="more-128"></span><strong>Первый способ</strong>, используя стандартный <strong>wget</strong>:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2"># wget -rEkp -np -nc http://www.domain.com/</span></pre></div></div></div></div></div></div></div>


<p><strong>Второй способ</strong>, используя <a rel="nofollow" target="_blank" href="http://www.httrack.com/" ><strong>httrack</strong></a>:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2"># httrack &quot;http://www.domain.com/&quot; -O &quot;./www.domain.com&quot; &quot;+*.www.domain.com/*&quot; -v</span></pre></div></div></div></div></div></div></div>


<p>Первый способ намного более быстрый, но с некоторыми динамическими страницами могут быть проблемы, поэтому на помощь приходит httrack, -  жаль только, работает он гораздо медленнее :(<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2010/10/25/site-offline-copy-to-disk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перекодировка имён файлов и директорий на файловом сервере</title>
		<link>http://siava.su/2009/11/06/encoding-change-for-files/</link>
		<comments>http://siava.su/2009/11/06/encoding-change-for-files/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 11:02:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[convmv]]></category>
		<category><![CDATA[cp1251]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[utf8]]></category>
		<category><![CDATA[перекодировка]]></category>

		<guid isPermaLink="false">http://siava.su/?p=89</guid>
		<description><![CDATA[Задача следующая. Имеется файловый сервер, в котором все файлы и директории имеют имена в кодировке cp-1251. Требуется быстро и без лишних заморочек конвертировать их в другую кодировку, например в utf-8. Операционна система Linux. Как оказалось, всё элементарно и просто :) Для этого нам понадобится утилита convmv. Скачать её можно отсюда. На момент написания статейки, последняя [...]]]></description>
			<content:encoded><![CDATA[<p>Задача следующая. Имеется файловый сервер, в котором все файлы и директории имеют имена в кодировке cp-1251. Требуется быстро и без лишних заморочек конвертировать их в другую кодировку, например в utf-8. Операционна система Linux.</p>
<p>Как оказалось, всё элементарно и просто :)</p>
<p><span id="more-89"></span>Для этого нам понадобится утилита <strong>convmv</strong>. Скачать её можно <a rel="nofollow" target="_blank" href="http://j3e.de/linux/convmv/" >отсюда</a>. На момент написания статейки, последняя её версия была 1.14. В архиве прилагается уже скомпилированный вариант, который можно сохранить в директорию /usr/local/bin, либо запускать с любого места.</p>
<p>Параметры командной строки convmv:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2"># ./convmv --help</span>
Your Perl version has fleas <span class="co2">#22111 #37757 #49830</span>
convmv <span class="nu16">1.14</span> <span class="sy0">-</span> converts filenames from one encoding to another
Copyright <span class="br0">&#40;</span>C<span class="br0">&#41;</span> <span class="nu0">2003</span><span class="sy0">-</span><span class="nu0">2008</span> Bjoern JACKE <span class="sy0">&amp;</span>lt<span class="sy0">;</span>bjoern@j3e.<span class="me1">de</span><span class="sy0">&amp;</span>gt<span class="sy0">;</span>
&nbsp;
This program comes with ABSOLUTELY NO WARRANTY<span class="sy0">;</span> it may be copied or modified
under the terms of the GNU General Public License version <span class="nu0">2</span> or <span class="nu0">3</span> as published
by the Free Software Foundation.
&nbsp;
<span class="me1">USAGE</span><span class="sy0">:</span> convmv <span class="br0">&#91;</span>options<span class="br0">&#93;</span> FILE<span class="br0">&#40;</span>S<span class="br0">&#41;</span>
<span class="sy0">-</span>f enc     encoding <span class="sy0">*</span>from<span class="sy0">*</span> which should be converted
<span class="sy0">-</span>t enc     encoding <span class="sy0">*</span>to<span class="sy0">*</span> which should be converted
<span class="sy0">-</span>r         recursively go through directories
<span class="sy0">-</span>i         interactive mode <span class="br0">&#40;</span>ask <span class="kw1">for</span> each action<span class="br0">&#41;</span>
<span class="sy0">--</span>nfc      target files will be normalization form C <span class="kw1">for</span> UTF<span class="sy0">-</span><span class="nu0">8</span> <span class="br0">&#40;</span>Linux etc.<span class="br0">&#41;</span>
<span class="sy0">--</span>nfd      target files will be normalization form D <span class="kw1">for</span> UTF<span class="sy0">-</span><span class="nu0">8</span> <span class="br0">&#40;</span>OS X etc.<span class="br0">&#41;</span>
<span class="sy0">--</span>qfrom    be quiet about the <span class="st0">&quot;from&quot;</span> of a <span class="kw3">rename</span> <span class="br0">&#40;</span><span class="kw1">if</span> it screws up your terminal e.<span class="me1">g</span>.<span class="br0">&#41;</span>
<span class="sy0">--</span>qto      be quiet about the <span class="st0">&quot;to&quot;</span> of a <span class="kw3">rename</span> <span class="br0">&#40;</span><span class="kw1">if</span> it screws up your terminal e.<span class="me1">g</span>.<span class="br0">&#41;</span>
<span class="sy0">--</span>exec c   execute command instead of <span class="kw3">rename</span> <span class="br0">&#40;</span>use <span class="co2">#1 and #2 and see man page)</span>
<span class="sy0">--</span>list     list all available encodings
<span class="sy0">--</span>lowmem   keep memory footprint low <span class="br0">&#40;</span>see man page<span class="br0">&#41;</span>
<span class="sy0">--</span>nosmart  ignore <span class="kw1">if</span> files already seem to be UTF<span class="sy0">-</span><span class="nu0">8</span> and convert <span class="kw1">if</span> posible
<span class="sy0">--</span>notest   actually <span class="kw1">do</span> <span class="kw3">rename</span> the files
<span class="sy0">--</span>replace  will replace files <span class="kw1">if</span> they are equal
<span class="sy0">--</span>unescape convert<span class="sy0">%</span>20ugly<span class="sy0">%</span>20escape<span class="sy0">%</span>20sequences
<span class="sy0">--</span>upper    turn to upper <span class="kw1">case</span>
<span class="sy0">--</span>lower    turn to lower <span class="kw1">case</span>
<span class="sy0">--</span>parsable write a parsable todo list <span class="br0">&#40;</span>see man page<span class="br0">&#41;</span>
<span class="sy0">--</span>help     print this help</pre></div></div></div></div></div></div></div>


<p>Предположим, что содержимое файлового сервера расположено в каталоге /home/ftp , тогда для конвертации имён файлов и директорий из кодировки cp-1251 в utf-8:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2"># ./convmv -r --notest -f cp-1251 -t utf-8 /home/ftp/*</span></pre></div></div></div></div></div></div></div>


<p>Чтобы проверить работу конвертера, но без вноса изменений в файловую систему, выполняйте команду без параметра &#8211;notest</p>
<p>Надеюсь, что вам также пригодится, как пригодилось мне :)<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2009/11/06/encoding-change-for-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Синхронизация файлов на удалённый ftp-сервер</title>
		<link>http://siava.su/2009/04/15/ftp-mirror/</link>
		<comments>http://siava.su/2009/04/15/ftp-mirror/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 11:16:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[lftp]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[зеркало]]></category>
		<category><![CDATA[синхронизация]]></category>

		<guid isPermaLink="false">http://siava.su/?p=63</guid>
		<description><![CDATA[Попалась как-то задачка создать shell-скрипт для автономной синхронизации файлов с локальной Linux-системы на удалённый ftp-сервер. Первый способ, используя ftp #!/bin/sh ftp -n -v -p -i &#34;ftp.remote.domain&#34; &#60;&#60; cmd user &#34;login&#34; &#34;password&#34; cd /remotedir lcd /localdir mput * quit Минусы его заключаются в том, что все файлы из локальной директории закачиваются на удалённый ftp-сервер при каждом [...]]]></description>
			<content:encoded><![CDATA[<p>Попалась как-то задачка создать shell-скрипт для автономной синхронизации файлов с локальной Linux-системы на удалённый ftp-сервер.</p>
<p><span id="more-63"></span></p>
<p><strong>Первый способ, используя ftp</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2">#!/bin/sh</span>
ftp <span class="sy0">-</span>n <span class="sy0">-</span>v <span class="sy0">-</span>p <span class="sy0">-</span>i <span class="st0">&quot;ftp.remote.domain&quot;</span> <span class="sy0">&lt;&lt;</span> cmd
user <span class="st0">&quot;login&quot;</span> <span class="st0">&quot;password&quot;</span>
cd <span class="sy0">/</span>remotedir
lcd <span class="sy0">/</span>localdir
mput <span class="sy0">*</span>
quit</pre></div></div></div></div></div></div></div>


<p>Минусы его заключаются в том, что все файлы из локальной директории закачиваются на удалённый ftp-сервер при каждом вызове скрипта. Именно все, а не те, что изменились.</p>
<p><strong>Второй способ, используя lftp</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="c"><pre class="de1"><span class="co2">#!/bin/sh</span>
lftp <span class="sy0">-</span>p <span class="nu0">21</span> <span class="sy0">-</span>u login<span class="sy0">,</span>password ftp.<span class="me1">remote</span>.<span class="me1">domain</span><span class="sy0">/</span>remotedir  <span class="sy0">&lt;&lt;</span> cmd
mirror <span class="sy0">-</span>e <span class="sy0">-</span>R <span class="sy0">-</span>c <span class="sy0">-</span>v <span class="sy0">--</span><span class="kw3">log</span><span class="sy0">=/</span>var<span class="sy0">/</span><span class="kw3">log</span><span class="sy0">/</span>lftp.<span class="kw3">log</span> <span class="sy0">/</span>localdir<span class="sy0">/</span>path .
<span class="me1">quit</span></pre></div></div></div></div></div></div></div>


<p>листинг всех параметров lftp mirror:</p>
<pre>Usage: mirror [OPTS] [remote [local]]

Mirror specified remote directory to local directory

-c, --continue		continue a mirror job if possible
-e, --delete		delete files not present at remote site
--delete-first		delete old files before transferring new ones
-s, --allow-suid	set suid/sgid bits according to remote site
--allow-chown		try to set owner and group on files
--ignore-time		ignore time when deciding whether to download
-n, --only-newer	download only newer files (-c won't work)
-r, --no-recursion	don't go to subdirectories
-p, --no-perms		don't set file permissions
--no-umask		don't apply umask to file modes
-R, --reverse		reverse mirror (put files)
-L, --dereference	download symbolic links as files
-N, --newer-than=SPEC	download only files newer than specified time
-P, --parallel[=N]	download N files in parallel
-i RX, --include RX	include matching files
-x RX, --exclude RX	exclude matching files
RX is extended regular	expression
-v, --verbose[=N]	verbose operation
--log=FILE		write lftp commands being executed to FILE
--script=FILE		write lftp commands to FILE, but don't execute them
--just-print, --dry-run	same as --script=-

When using -R, the first directory is local and the second is remote.
If the second directory is omitted, basename of first directory is used.
If both directories are omitted, current local and remote directories are used.</pre>
<p>Таким образом, на удалённый ftp из локальной директории загружаются только новые файлы. Отсутствующие в локальной директории файлы также удаляются на удалённом ftp сервере. За это отвечает параметр <strong>-e</strong><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2009/04/15/ftp-mirror/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Разгоняем Linux</title>
		<link>http://siava.su/2009/01/05/linux-overclocking/</link>
		<comments>http://siava.su/2009/01/05/linux-overclocking/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 22:32:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tuning]]></category>
		<category><![CDATA[быстродействие]]></category>
		<category><![CDATA[линукса]]></category>
		<category><![CDATA[оптимизация]]></category>
		<category><![CDATA[тюнинг]]></category>

		<guid isPermaLink="false">http://siava.su/?p=43</guid>
		<description><![CDATA[Достаточно интересный материал об оптимизации Linux-системы, взятый из журнала LINUX FORMAT (N4 2008). ЧАСТЬ 1 &#8211; Оптимизация винчестера Корневой раздел, на который у вас установлен Linux, скорее всего, содержит файловую систему ext3/ReiserFS/XFS. Сведения о монтируемых при загрузке разделах содержатся в файле /etc/fstab, где обязательно присутствует корневой раздел (/). Обратите внимание на пункт defaults, обозначающий стандартный [...]]]></description>
			<content:encoded><![CDATA[<p>Достаточно интересный материал об оптимизации Linux-системы, взятый из журнала LINUX FORMAT (N4 2008).</p>
<p><strong>ЧАСТЬ 1 &#8211; Оптимизация винчестера</strong></p>
<p><span id="more-43"></span></p>
<p>Корневой раздел, на который у вас установлен Linux, скорее всего, содержит файловую систему ext3/ReiserFS/XFS. Сведения о монтируемых при загрузке разделах содержатся в файле /etc/fstab, где обязательно присутствует корневой раздел (/). Обратите внимание на пункт defaults, обозначающий стандартный набор параметров монтирования. Однако мы можем указать их и вручную, поставив после defaults запятую и перечислив ряд настроек, которые сделают файловую систему быстрее.</p>
<p>Например, для<br />
ReiserFS: acl,user_xattr,noatime,nodiratime,notail,barrier=flush<br />
Ext3: acl,user_xattr,noatime,nodiratime,barrier=1<br />
XFS: defaults,noatime,nodiratime,logbufs=8,logbsize=32k,biosize=16,allocsize=512m,barrier</p>
<p>Вот что все это означает:<br />
user_xattr – расширенные атрибуты файлов (используются для индексирования).<br />
barrier – команда очистки кэша.<br />
noatime и nodiratime – отключение записи времени последнего доступа (для файлов/директорий).<br />
allocsize – размер заранее резервируемой области на диске. Высокое значение помогает избежать фрагментации.<br />
biosize – размер I/O-блоков по умолчанию.<br />
logbufs – количество встроенных буферов для ведения журнала.<br />
logbsize – размер буфера.</p>
<p>Последние 3 параметра увеличивают скорость чтения/записи.</p>
<p><strong>Включаем режим Writeback</strong></p>
<p>В большинстве дистрибутивов при создании раздела ext3 используется тип журналирования Ordered (упорядоченный), т.к. он обеспечивает наилучшее соотношение скорости и безопасности. Однако самым быстрым режимом является Writeback (журналирование после записи): он осуществляет наименьшее журналирование.</p>
<p>Для его включения рекомендуется загрузиться в другой дистрибутив или с LiveCD, так как необходимо, чтобы ваш обычной корневой раздел (в нашем примере это /dev/sda1) был размонтирован:</p>
<p>tune2fs -O has_journal -o journal_data_writeback /dev/sda1</p>
<p><strong>Включение индексирования директорий</strong></p>
<p>Индексирование директорий увеличивает скорость чтения и записи «в» и «из» каталогов вашего жесткого диска. Это полностью безопасный и рекомендованный режим.</p>
<p>Сначала нужно указать режим журналирования:<br />
tune2fs -O dir_index /dev/sda1</p>
<p>Затем – включить индексацию существующих директорий:<br />
e2fsck -D /dev/sda1</p>
<p>Выполнение команды e2fsck может занять немного времени – это зависит от размера вашего раздела и количества директорий в нем.&raquo;</p>
<p><strong>ЧАСТЬ 2 &#8211; Оптимизация загрузки Linux</strong></p>
<p>Здесь необходимо понимать, что и когда происходит во время старта системы. Последовательность примерно такова:</p>
<p>1 В соответствии с записью в загрузчике GRUB/LILO, загружается ядро (kernel) и образ необходимых для загрузки драйверов (initrd).<br />
2 Далее процесс /sbin/init запускает службы, настроенные для определенных уровней запуска. Последний уровень перед загрузкой графической системы – runlevel 5.<br />
3 Запускается менеджер дисплея (обычно gdm/kdm), предлагающий ввести имя пользователя и пароль (если не включена функция автоматического входа в систему).<br />
4 После того как вы авторизуетесь, будет загружена рабочая среда (обычно KDE или GNOME). При автоматическом входе в систему среда загружается сразу после запуска gdm/kdm, которых вы, соответственно, не видите.</p>
<p>Обычно все советы по уменьшению времени загрузки сводятся к отключению ненужных служб, но мы пойдем дальше и постараемся ускорить загрузку на самом первом этапе. Для этого необходимо пересобрать ядро без образа initramfs, который и отвечает за содержание файла initrd в директории /boot. Чтобы ОС смогла загрузиться без файла initrd, необходимо, чтобы в ядро был встроен драйвер файловой системы. Все остальные драйверы могут присутствовать в виде отдельных модулей. Итак, откройте окно конфигурации ядра (make xconfig или make menuconfig), найдите параметр Initial RAM filesystem and RAM disk (initramfs/initrd) support и снимите с него галочку. Теперь в разделе File systems убедитесь, что драйвер корневой файловой системы встроен в ядро (y), а не собирается в виде модуля (m). В качестве дополнительных мер по оптимизации ядра не забудьте сделать следующее:</p>
<p>В разделе Processor type and feautures выбрать свой тип процессора, повышенную частоту таймера (1000 Hz) и уменьшение задержек – Preemptible kernel (если у вас настольный компьютер). Также вы можете попробовать бестактовый режим – Tickless kernel, который очень положительно влияет на многозадачность.<br />
Отключить явно ненужные модули, типа Dallas 1-Wire bus и другие устройства, которых у вас точно нет (например, Bluetooth или Firewire). Этим вы сэкономите время при сборке ядра.<br />
Обязательно отключите Kernel debugging в разделе Kernel hacking, так вы сэкономите и на размере итогового ядра.</p>
<p>Теперь можно собрать ядро привычными командами: make all, make modules_install и make install. В большинстве современных дистрибутивов автоматически будет создана запись в файле загрузчика. Вы заметите, что она лишена записи об initrd. Теперь ядро будет загружаться и работать заметно быстрее!<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2009/01/05/linux-overclocking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Тюнинг squid прокси сервера</title>
		<link>http://siava.su/2008/08/19/squid-proxy-tuning/</link>
		<comments>http://siava.su/2008/08/19/squid-proxy-tuning/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 12:11:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[tuning]]></category>
		<category><![CDATA[кеш]]></category>
		<category><![CDATA[тюнинг]]></category>

		<guid isPermaLink="false">http://siava.su/?p=19</guid>
		<description><![CDATA[Настройки, позволяющие оптимизировать работу кеша squid прокси-сервера. Честно признаюсь, что нашёл их на просторах инета и не оптимизировал под свои нужды, но суть некоторых строк вполне понятна. refresh_pattern windowsupdate.com/.*\.&#40;cab&#124;exe&#41; 4320 100% 43200 reload-into-ims refresh_pattern download.microsoft.com/.*\.&#40;cab&#124;exe&#41; 4320 100% 43200 reload-into-ims refresh_pattern ^http://.*\.cnn\.com 360 50% 4320 override-lastmod refresh_pattern ^http://news\.bbc\.co\.uk 360 50% 4320 override-lastmod refresh_pattern microsoft 1080 150% [...]]]></description>
			<content:encoded><![CDATA[<p>Настройки, позволяющие оптимизировать работу кеша squid прокси-сервера. Честно признаюсь, что нашёл их на просторах инета и не оптимизировал под свои нужды, но суть некоторых строк вполне понятна.</p>
<p><span id="more-19"></span></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="asp"><pre class="de1">refresh_pattern windowsupdate.<span class="me1">com</span><span class="sy0">/</span>.<span class="sy0">*</span>\.<span class="br0">&#40;</span>cab<span class="sy0">|</span>exe<span class="br0">&#41;</span> <span class="nu0">4320</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="nu0">43200</span> reload-into-ims
refresh_pattern download.<span class="me1">microsoft</span>.<span class="me1">com</span><span class="sy0">/</span>.<span class="sy0">*</span>\.<span class="br0">&#40;</span>cab<span class="sy0">|</span>exe<span class="br0">&#41;</span> <span class="nu0">4320</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="nu0">43200</span> reload-into-ims
refresh_pattern ^http<span class="sy0">:</span><span class="co2">//.*\.cnn\.com 360 50% 4320 override-lastmod</span>
refresh_pattern ^http<span class="sy0">:</span><span class="co2">//news\.bbc\.co\.uk 360 50% 4320 override-lastmod</span>
refresh_pattern microsoft <span class="nu0">1080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">10080</span> override-lastmod
refresh_pattern msn\.<span class="me1">com</span> <span class="nu0">4320</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">10080</span> override-lastmod
refresh_pattern ^http<span class="sy0">:</span><span class="co2">//.*\.doubleclick\.net 10080 300% 40320 override-lastmod</span>
refresh_pattern ^http<span class="sy0">:</span><span class="co2">//.*FIDO 360 1000% 480</span>
refresh_pattern \.<span class="me1">r</span><span class="br0">&#91;</span><span class="nu0">0</span>-<span class="nu0">9</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span>-<span class="nu0">0</span><span class="br0">&#93;</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern ^http<span class="sy0">:</span><span class="co2">//.*\.gif$ 1440 50% 20160</span>
refresh_pattern ^http<span class="sy0">:</span><span class="co2">//.*\.asis$ 1440 50% 20160</span>
refresh_pattern -i \.<span class="me1">pdf</span>$ <span class="nu0">10080</span> <span class="nu0">90</span><span class="sy0">%</span> <span class="nu0">43200</span>
refresh_pattern -i \.<span class="me1">art</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">43200</span>
refresh_pattern -i \.<span class="me1">avi</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">mov</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">wav</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">mp3</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">qtm</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">mid</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">viv</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">mpg</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">jpg</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span> reload-into-ims
refresh_pattern -i \.<span class="me1">rar</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">ram</span>$ <span class="nu0">10080</span> <span class="nu0">150</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">gif</span>$ <span class="nu0">10080</span> <span class="nu0">300</span><span class="sy0">%</span> <span class="nu0">40320</span> reload-into-ims
refresh_pattern -i \.<span class="me1">txt</span>$ <span class="nu0">1440</span> <span class="nu0">100</span><span class="sy0">%</span> <span class="nu0">20160</span> reload-into-ims override-lastmod
refresh_pattern -i \.<span class="me1">zip</span>$ <span class="nu0">2880</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">arj</span>$ <span class="nu0">2880</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">exe</span>$ <span class="nu0">2880</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">tgz</span>$ <span class="nu0">10080</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">gz</span>$ <span class="nu0">10080</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">tgz</span>$ <span class="nu0">10080</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">tar</span>$ <span class="nu0">10080</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
refresh_pattern -i \.<span class="me1">Z</span>$ <span class="nu0">10080</span> <span class="nu0">200</span><span class="sy0">%</span> <span class="nu0">40320</span>
&nbsp;
refresh_pattern ^ftp<span class="sy0">:</span><span class="co2">// 1440 50% 10080</span>
refresh_pattern ^gopher<span class="sy0">:</span><span class="co2">// 1440 10% 1440</span>
refresh_pattern . <span class="nu0">0</span> <span class="nu0">20</span><span class="sy0">%</span> <span class="nu0">4320</span>
negative_ttl <span class="nu0">1</span> minutes
positive_dns_ttl <span class="nu0">15</span> hours
negative_dns_ttl <span class="nu0">1</span> minutes
half_closed_clients off</pre></div></div></div></div></div></div></div>


<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2008/08/19/squid-proxy-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I/O schedulers в Linux</title>
		<link>http://siava.su/2008/06/11/linux-io-schedulers/</link>
		<comments>http://siava.su/2008/06/11/linux-io-schedulers/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 19:30:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Anticipatory]]></category>
		<category><![CDATA[CFQ]]></category>
		<category><![CDATA[Deadline]]></category>
		<category><![CDATA[I/O schedulers]]></category>

		<guid isPermaLink="false">http://siava.su/?p=7</guid>
		<description><![CDATA[Сегодня, впервые за 4 года использования Slackware Linux, сделал для себя мега-открытие, что всё это время я использовал на сервере далеко не самые оптимальные планировщики ввода-вывода (для конкретных задач, разумеется). Так вот, мой некогда любимый Deadline, а затем, сменивший его Anticipatory теперь нервно курят в сторонке :) Суть такова, что планировщик CFQ я не использовал [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня, впервые за 4 года использования Slackware Linux, сделал для себя мега-открытие, что всё это время я использовал на сервере далеко не самые оптимальные планировщики ввода-вывода (для конкретных задач, разумеется).</p>
<p><span id="more-7"></span>Так вот, мой некогда любимый Deadline, а затем, сменивший его Anticipatory теперь нервно курят в сторонке :) Суть такова, что планировщик CFQ я не использовал из-за того, что его советуют ставить на Desktop-системы, мол для сервера он не катит.. а вот и зря! Deadline безусловно хорош, но при наличие на одном компе сервисов: mysql, httpd, игрового сервака, ftp, индексаторов и изрядного количества посетителей, которые умудряются всем этим пользоваться одновременно, получаются такие ситуации, когда из-за какого-нибудь тяжёлого SQL-запроса всё буквально &laquo;встаёт&raquo;, ожидая его завершения. Система перебрасывая львиную долю своих ресурсов на этот запрос, ставя остальные в очередь, &#8211; а это не есть хорошо для веб-сервера.</p>
<p>Anticipatory делает примерно то же самое, а в некоторых случаях хуже. Пытаясь уменьшить число обращений к диску он заставляет систему ожидать некоторое время, чтобы поймать схожие запросы к областям диска. И опять же, в случае тяжёлых запросов к базе данных все остальные ждут своей очереди.</p>
<p>CFQ &#8211; планировщик активный по-умолчанию, а ведь и не зря! Он равномерно распределяет обращения к дисковой системе, выделяя примерно одинаковые ресурсы на это. Для веб-сервера с базой данных это просто идеальное сочетание, &#8211; все страницы генерятся быстро и непринуждённо, load average не скачет как сумасшедший, а равномерно колеблется в пределах некоторых отличных от нуля значений :)</p>
<p>Стоит отметить ещё одну мелочь &#8211; Timer frequency рекомендую задать максимальным значением в 1000Hz для ускорения времени отклика ядра на системные запросы.<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://siava.su/2008/06/11/linux-io-schedulers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

