<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>IT science: заметки с тегом linux</title>
<link>https://itscience.pro/tags/linux/</link>
<description>IT science — статьи и инструкции из мира IT</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.4 (v4171)</generator>

<itunes:subtitle>IT science — статьи и инструкции из мира IT</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Чистим почтовый сервер от старых рассылок</title>
<guid isPermaLink="false">45</guid>
<link>https://itscience.pro/all/chistim-pochtovy-server-ot-staryh-rassylok/</link>
<pubDate>Tue, 06 Sep 2022 10:49:01 +0300</pubDate>
<author></author>
<comments>https://itscience.pro/all/chistim-pochtovy-server-ot-staryh-rassylok/</comments>
<description>
&lt;p&gt;Что-то много мусора накопилось в ящиках пользователей.&lt;br /&gt;
Можно удалить старые письма (рассылки), которые потеряли свою актуальность.&lt;/p&gt;
&lt;p&gt;Опираться будем на уникальное содержимое письма. И возраст файла.&lt;/p&gt;
&lt;p&gt;например, ищем строку «Return-Path: &lt;user@domain.ru&gt;»&lt;br /&gt;
и пусть, файл будет страше 30 дней&lt;/p&gt;
&lt;p&gt;получается скрипт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find /var/vmail/ -type f -mtime +30 -exec grep -Ilr &amp;quot;Return-Path: &amp;lt;user@domain.ru&amp;gt;&amp;quot;  {} \;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;где «/var/vmail/» — путь к хранилищу писем&lt;/p&gt;
&lt;p&gt;выполнив эту команду получим список нужных нам файлов, без удаления&lt;/p&gt;
&lt;p&gt;а теперь, просто допишем в конец команду для удаления&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find /var/vmail/ -type f -mtime +30 -exec grep -Ilr &amp;quot;Return-Path: &amp;lt;user@domain.ru&amp;gt;&amp;quot;  {} \; | xargs rm&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;всё&lt;/p&gt;
</description>
</item>

<item>
<title>подготовка многостраничных TIFF для nalog.ru</title>
<guid isPermaLink="false">38</guid>
<link>https://itscience.pro/all/podgotovka-mnogostranichnyh-tiff-dlya-nalog-ru/</link>
<pubDate>Wed, 23 Jun 2021 17:33:08 +0300</pubDate>
<author></author>
<comments>https://itscience.pro/all/podgotovka-mnogostranichnyh-tiff-dlya-nalog-ru/</comments>
<description>
&lt;p&gt;когда для налоговой нужно подготовить документы в формате многостраничных монохромных TIFF с разрешением 300х300 dpi приходит в помощь linux&lt;/p&gt;
&lt;p&gt;предположим у вас уже есть многостраничный pdf «multipage-input.pdf»&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;gs -o multipage-tiffg.tif -sDEVICE=tiffgray -r300x300 multipage-input.pdf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;создаём многостраничный TIFF «multipage-tiffg.tif» в оттенках серого, разрешением 300dpi&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;convert multipage-tiffg.tif -monochrome -compress lzw mono.tif&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;далее преобразуем в монохромный документ «mono.tif»&lt;/p&gt;
</description>
</item>

<item>
<title>удаляем дубликаты с помощью fdupes</title>
<guid isPermaLink="false">20</guid>
<link>https://itscience.pro/all/udalyaem-dublikaty-s-pomoschyu-fdupes/</link>
<pubDate>Tue, 30 Jul 2019 18:34:09 +0300</pubDate>
<author></author>
<comments>https://itscience.pro/all/udalyaem-dublikaty-s-pomoschyu-fdupes/</comments>
<description>
&lt;p&gt;Накопилось за несколько лет море фотографий, и столкнулся я с тем, что некоторые фотографии продублированы. Думал, телефон несколько раз выгрузил их на сервер, но оказалось их немало, да в разных папках и это неприятный факт, т. к. руками перелопатить миллионы фотографий — нереально... а сравнивать по содержимому процесс очень ресурсоемкий. Порывшись на просторах, нашел интересную утилитку fdupes, написал ее Андриан Лопес (Adrian Lopez), за что ему огромное спасибо. Программа сравнивает размер файла и MD5 хэш, и после сравнения начинает сверку по-байтно.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;fdupes /home/user/photos&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ищет дубликаты в указанном каталоге&lt;/p&gt;
&lt;p&gt;-r — рекурсивный поиск&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;fdupes -r /home/user/photos &amp;gt; duplicate_list.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;сохранит в файле список дубликатов&lt;/p&gt;
&lt;p&gt;а, дальше с помощью awk отфильтруем дублирующиеся файлы для дальнейшего удаления&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;awk &amp;#039;BEGIN{d=0} NF==0{d=0} NF&amp;gt;0{if(d)print;d=1}&amp;#039; duplicate_list.txt &amp;gt; delete_list.txt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;а затем удаляем по списку&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;rm `cat delete_list.txt`&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;или так&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;xargs rm &amp;lt; delete_list.txt&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>find и суммарный объем данных</title>
<guid isPermaLink="false">19</guid>
<link>https://itscience.pro/all/find-i-summarny-obem-dannyh/</link>
<pubDate>Tue, 30 Jul 2019 18:30:48 +0300</pubDate>
<author></author>
<comments>https://itscience.pro/all/find-i-summarny-obem-dannyh/</comments>
<description>
&lt;p&gt;объем этих файлов, как это сделать?&lt;br /&gt;
Задача нетривиальная, нашлось два решения (их может быть и больше)&lt;/p&gt;
&lt;p&gt;первое, используем du:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find параметры_поиска -exec du -b {} + | awk ’{sum = sum+$1 }; END { print sum }’&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;пример:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find /volume1/photo/ -maxdepth 1 -type f -exec du -b {} + | awk ’{sum = sum+$1 }; END { print sum }’&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;второе, используем ls:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find параметры_поиска -ls | awk ’{sum = sum+$7 }; END { print sum }’&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;пример:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;find /volume1/photo/ -maxdepth 1 -type f -ls | awk ’{sum = sum+$7 }; END { print sum }’&lt;/p&gt;
&lt;/blockquote&gt;
</description>
</item>

<item>
<title>качаем ролики с сайта Россия К</title>
<guid isPermaLink="false">15</guid>
<link>https://itscience.pro/all/kachaem-roliki-s-sayta-rossiya-k/</link>
<pubDate>Tue, 04 Jun 2019 12:40:48 +0300</pubDate>
<author></author>
<comments>https://itscience.pro/all/kachaem-roliki-s-sayta-rossiya-k/</comments>
<description>
&lt;p&gt;Потребовалось нам скачать передачу АГОРА с сайта и пересмотреть ее в режиме offline.&lt;/p&gt;
&lt;p&gt;открываем ссылку&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://tvkultura.ru/video/show/brand_id/61882/episode_id/2169406/video_id/2182968/"&gt;https://tvkultura.ru/video/show/brand_id/61882/episode_id/2169406/video_id/2182968/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;переходим в режим отладки Ctrl+Shift+C, выбираем закладку «Сеть» (Network)&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://itscience.pro/pictures/k1.png" width="497" height="242" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;очищаем список загруженных документов, жмем в плеере play и у нас начинают появляться подгруженные файлы, в списке находим ролики с расширением ts. Да вся передача разбита на множество небольших фрагментов, по 10-15 секунд, нам надо их всех выкачать.&lt;br /&gt;
на найденном файле жмем правой клавишей и выбираем Копировать-&gt;Копировать URL (Copy-&gt;Copy link address)&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://itscience.pro/pictures/k2.png" width="540" height="385" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;у нас в буфере обмена оказывается ссылка примерно такого вида:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://a3569458507-s81121.cdn.ngenix.net/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/002/182/968_d20190519103336.smil/media_b1800000_pd3628000_1.ts"&gt;https://a3569458507-s81121.cdn.ngenix.net/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/002/182/968_d20190519103336.smil/media_b1800000_pd3628000_1.ts&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;находим последний фрагмент, перематываем ролик до конца и подгружается файл с адресом:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://a3569458507-s81121.cdn.ngenix.net/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/002/182/968_d20190519103336.smil/media_b800000_pd3628000_374.ts"&gt;https://a3569458507-s81121.cdn.ngenix.net/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/002/182/968_d20190519103336.smil/media_b800000_pd3628000_374.ts&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;нам нужны значения от 1 до 374, а далее дело техники, я уже подготовил bash скрипт&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash

# задаем диапазон фрагментов, от 1 до 374
for counter in {1..374}
do
   # дополняем нулями до трехзначного числа (чтобы при склейке в один файл фрагменты не перемешались)
   foo=$(printf &amp;quot;%03d&amp;quot; $counter)
   # скачиваем ролики по одному и сохраняем с дружественными именами
   wget -O &amp;quot;video_$foo.ts&amp;quot; &amp;quot;https://a3569458507-s81121.cdn.ngenix.net/_cdn_auth/secure/v/vh/vod_hls/definst/smil:vh/smil/002/182/968_d20190519103336.smil/media_b800000_pd3628000_$counter.ts&amp;quot;
done

# дальше с помощью ffmpeg склеиваем в один файл и сохраняем в формате mp4
ffmpeg -f concat -safe 0 -i &amp;lt;(for f in ./*.ts; do echo &amp;quot;file &amp;#039;$PWD/$f&amp;#039;&amp;quot;; done) -c copy output.mp4

# удаляем лишние файлы
find . -name &amp;quot;*.ts&amp;quot; -type f -delete&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;в результате работы скрипта получается файл output.mp4, в котором находится вся передача&lt;/p&gt;
</description>
</item>

<item>
<title>автокликер для linux</title>
<guid isPermaLink="false">1</guid>
<link>https://itscience.pro/all/avtokliker-dlya-linux/</link>
<pubDate>Wed, 03 Apr 2019 10:58:32 +0300</pubDate>
<author></author>
<comments>https://itscience.pro/all/avtokliker-dlya-linux/</comments>
<description>
&lt;p&gt;IMHO лучший жанр игр для нас  — idle game. По большей части это «кликеры», есть куча программ  автоматизации нажатий кнопок для Windows, а вот для Linux не нашлось, исправляем ситуацию.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://itscience.pro/pictures/click_generator.png" width="337" height="236" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;скачать можно тут: &lt;a href="https://itscience.pro/downloads/clicks_generator.tar.gz"&gt;https://itscience.pro/downloads/clicks_generator.tar.gz&lt;/a&gt;&lt;/p&gt;
</description>
</item>


</channel>
</rss>