<?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>REMADMIN</title>
	<atom:link href="https://remadmin.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://remadmin.com</link>
	<description>Удалённый системный администратор</description>
	<lastBuildDate>Sun, 30 Aug 2026 01:08:35 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>Инкрементальный бэкап через rsync &#8211;link-dest: полные слепки, hardlink и проверка restore</title>
		<link>https://remadmin.com/blog/linux/inkrementalnyj-bekap-cherez-rsync-link-dest-polnye-slepki-hardlink-i-proverka-restore/</link>
					<comments>https://remadmin.com/blog/linux/inkrementalnyj-bekap-cherez-rsync-link-dest-polnye-slepki-hardlink-i-proverka-restore/#respond</comments>
		
		<dc:creator><![CDATA[Cursor Blog]]></dc:creator>
		<pubDate>Sun, 30 Aug 2026 01:08:35 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[hardlink]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[Резервное копирование]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7391</guid>

					<description><![CDATA[Один каталог с --delete не даёт вчерашний файл, полный tar каждую ночь жрёт диск. rsync --link-dest делает слепки, которые выглядят полными, а на диске лежат только изменения. Как собрать, где ломается hardlink и как проверить restore не по коду выхода.]]></description>
										<content:encoded><![CDATA[<p>Типичная схема «бэкапа», которую я застаю на VPS: один каталог, в него каждую ночь <code>rsync -a --delete</code> с продакшена. Места мало, скорость нормальная, откатить вчерашний файл нельзя — его уже перетёрли сегодняшним. Второй край: каждый день полный <code>tar</code> в новый файл. Через две недели диск кончился, а проверять restore никто не пробовал, потому что «архив же пишется, код нулевой».</p>
<p><code>--link-dest</code> лежит между этими двумя дуростями. Каждый слепок выглядит как полный каталог: зашёл в <code>/backup/site/2026-08-27/</code> — видишь весь сайт, как в тот день. На диске при этом лежат только изменившиеся файлы. Неизменные — hardlink на inode прошлого слепка. Это не магия файловой системы и не «инкремент в проприетарном формате». Это обычный ext4/xfs и обычный rsync. Именно поэтому я его до сих пор ставлю там, где не нужен Borg/restic со своими репозиториями, а нужен каталог, из которого файл можно просто скопировать.</p>
<p>Ниже — как я это собираю, где оно ломается, и как проверить restore так, чтобы не узнать о битом бэкапе в день аварии.</p>
<h5>Что именно делает &#8211;link-dest, без сказки про «инкремент»</h5>
<p>Rsync сравнивает источник с каталогом назначения. Если файла в назначении ещё нет, он смотрит в каталог из <code>--link-dest</code>. Файл там есть, размер и mtime совпали — в новый слепок кладётся hardlink, байты заново не копируются. Файл изменился — в новый слепок пишется новая копия, старый inode остаётся в старом слепке.</p>
<p>Поэтому:</p>
<ul>
<li>каждый дневной каталог самодостаточный: <code>ls</code>, <code>grep</code>, <code>cp</code> работают как по живому дереву;</li>
<li>место растёт примерно на объём изменений, а не на полный размер каждый день;</li>
<li>удалили файл на проде — в новом слепке его нет (<code>--delete</code>), в старом он ещё лежит, пока слепок не выкинете.</li>
</ul>
<p>Hardlink — это не копия и не симлинк. Два имени, один inode. Пока на inode есть хотя бы одна ссылка, данные живы. Выкинули самый старый слепок — <code>unlink</code> уменьшил счётчик, и только для тех файлов, которые больше ни в одном слепке не встречаются, место реально освободилось.</p>
<p>Важное следствие, из-за которого люди потом материются: правка файла <em>внутри</em> слепка правит все слепки, которые ссылаются на тот же inode. Бэкап — не рабочая копия. Залезли поправить «на всякий случай конфиг в бэкапе» — поправили историю. Restore всегда копированием в другой каталог, никогда правкой на месте.</p>
<h5>Раскладка каталогов, с которой потом не стыдно жить</h5>
<p>Я не нумерую <code>snapshot.0</code> … <code>snapshot.7</code>, если нет rsnapshot. Номера крутятся <code>mv</code>, в панике в три ночи легко перепутать, что сейчас «сегодня». Даты читаются без расшифровки:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">/backup/host-a/
    2026-08-25/
    2026-08-26/
    2026-08-27/
    latest -&gt; 2026-08-27</pre>
<p>Отдельный корневой каталог на хост. Не сваливать сайты разных машин в одну кучу: hardlink работает только внутри одной файловой системы, а путать, чей это <code>wp-config.php</code>, в аварии дорого.</p>
<p>Диск под бэкапы — отдельный раздел или отдельный диск. Не <code>/var</code> той же машины, которую снимаете. И не NFS, если рассчитываете на hardlink: на NFS hardlink либо запрещён, либо ведёт себя так, что экономии не получите, а <code>du</code> сойдёт с ума. <code>--link-dest</code> требует, чтобы каталог назначения и каталог link-dest были на одной ФС. Проверка перед первым запуском:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">df -P /backup/host-a | awk 'NR==1 || {print $1, $6}'
stat -f -c '%i' /backup/host-a   # filesystem id, должен совпасть у всех слепков</pre>
<p>Если снимаете несколько источников на один раздел — нормально. Если бэкап-диск собрали из двух mount — rsync молча начнёт копировать файлы вместо hardlink, место кончится через несколько ночей, в логе это будет не ошибкой.</p>
<h5>Первый слепок и все следующие</h5>
<p>Первый прогон — обычный полный rsync, без <code>--link-dest</code>. Каталога для ссылок ещё нет.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">SRC=/var/www/site
ROOT=/backup/host-a
TODAY=$(date +%F)

mkdir -p "$ROOT/$TODAY"
rsync -aH --numeric-ids --delete --one-file-system \
  "$SRC/" "$ROOT/$TODAY/"
ln -sfn "$TODAY" "$ROOT/latest"</pre>
<p>Следующие ночи — тот же приём, плюс ссылка на предыдущий слепок. Предыдущий я беру не из <code>latest</code> до обновления симлинка, а явно: последний каталог с датой, который не равен сегодняшнему. Если ночной прогон перезапустили дважды за сутки, второй раз должен писать в тот же <code>$TODAY</code>, а не плодить <code>2026-08-27-1</code>.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">SRC=/var/www/site
ROOT=/backup/host-a
TODAY=$(date +%F)
DEST="$ROOT/$TODAY"
PREV=$(find "$ROOT" -mindepth 1 -maxdepth 1 -type d -name '20*' \
        ! -path "$DEST" | sort | tail -n1)

mkdir -p "$DEST"
RSYNC_OPTS=(-aH --numeric-ids --delete --one-file-system --partial)

if [ -n "$PREV" ]; then
  rsync "${RSYNC_OPTS[@]}" --link-dest="$PREV" "$SRC/" "$DEST/"
else
  rsync "${RSYNC_OPTS[@]}" "$SRC/" "$DEST/"
fi

ln -sfn "$TODAY" "$ROOT/latest"</pre>
<p>Слэш после <code>$SRC/</code> обязателен: копируем содержимое, а не каталог «site» внутрь слепка. Без слэша через год получите <code>/backup/host-a/2026-08-27/site/...</code> вперемешку со старыми прогонами, где слэш уже стоял.</p>
<p>По флагам, без которых потом больно:</p>
<ul>
<li><code>-a</code> — права, времена, симлинки, устройства. Без этого слепок «как файлы», не «как система».</li>
<li><code>-H</code> — сохранить hardlink <em>в источнике</em>. Это не про <code>--link-dest</code>. Если на проде два имени на один inode, без <code>-H</code> в бэкапе станут две копии.</li>
<li><code>--numeric-ids</code> — uid/gid цифрами, без подстановки имён. На бэкап-сервере пользователь <code>www-data</code> часто другой uid. Без флага права «починятся» молча и неправильно.</li>
<li><code>--delete</code> — в новом слепке нет того, чего уже нет на источнике. Старые слепки это не трогает.</li>
<li><code>--one-file-system</code> — не уехать в <code>/mnt</code>, bind-mount и чужой NFS, который примонтировали «на пять минут».</li>
</ul>
<p>ACL и xattr на нормальном сайте часто не нужны. Если нужны — добавляю <code>-AX</code>, и проверяю, что приёмник их умеет. На копии «через промежуточный tar на FAT» они умрут, hardlink тут ни при чём.</p>
<p>Тянуть по SSH с другой машины — тот же набор, источник <code>user@host-a:/var/www/site/</code>. Ключ только для чтения нужных путей, не root с интерактивным шеллом «потому что так проще». Хостнеймы в скриптах и known_hosts — свои, не клиентские FQDN из тикета.</p>
<h5>Что rsync считает «тем же файлом»</h5>
<p>По умолчанию — размер и mtime. Совпали оба, содержимое не читает. Для дерева из сотен тысяч php/jpg это правильно: иначе каждую ночь будете гонять диск впустую.</p>
<p>Где это врёт:</p>
<ul>
<li>бэкап-скрипт или деплой делают <code>touch</code> по дереву — mtime новый, rsync решит, что всё изменилось, hardlink не состоится, слепок станет почти полным;</li>
<li>наоборот: файл переписали, mtime оставили (редкость, но бывает у кривых копировщиков) — в слепке останется старое содержимое через hardlink;</li>
<li>права/владелец поменялись, размер и mtime нет — с обычным <code>-a</code> rsync всё же обновит метаданные. С hardlink это тонкое место: смена владельца на inode видна во всех слепках, которые на него ссылаются. На практике для «сайт + загруженные картинки» почти не всплывает. На домашних каталогах с постоянным <code>chown</code> — всплывает.</li>
</ul>
<p><code>--checksum</code> лечит второй случай и наказывает диск. Я включаю его точечно, не «на всякий случай каждый день». Для проверки целого слепка после аварии — да. Для ночного прогона магазина с десятками гигабайт upload — нет.</p>
<p>Ещё одна мина: <code>--inplace</code>. Он пишет в существующий файл. Существующий файл в новом слепке после hardlink — это тот же inode, что вчера. <code>--inplace</code> вместе с <code>--link-dest</code> портит историю. Не включать.</p>
<h5>Что не класть в слепок живьём</h5>
<p>Rsync снимает файлы. Он не делает консистентный снимок СУБД и не понимает очереди почты.</p>
<p>MySQL/MariaDB: ночью <code>mysqldump</code> (или <code>mariadb-dump</code>) в файл, и в слепок идёт дамп, не <code>/var/lib/mysql</code>. Снимать datadir на работающем сервере — лотерея с битым InnoDB. Если очень нужен сырой datadir — только после <code>FLUSH TABLES WITH READ LOCK</code> / горячего снимка LVM/ZFS, и это уже другая схема, не «просто rsync».</p>
<p>PostgreSQL: <code>pg_dump</code> или <code>pg_basebackup</code>, не <code>rsync</code> по <code>base/</code> на живой базе.</p>
<p>Сессии PHP, кэш, <code>node_modules</code>, очереди — либо exclude, либо смириться, что слепок на 80% состоит из мусора, который ещё и каждый раз «изменился». Типичный exclude для сайта:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">/wp-content/cache/
/wp-content/uploads/cache/
/tmp/
/var/tmp/
*.log</pre>
<p>Передаю через <code>--exclude-from=/etc/backup/site.excludes</code>. Не размазывать exclude по трём скриптам: через полгода никто не вспомнит, почему картинки из <code>uploads</code> вдруг не попали в слепок.</p>
<p>Полный бэкап системы — отдельный разговор. <code>/proc</code>, <code>/sys</code>, <code>/dev</code>, <code>/run</code> не снимают. <code>--one-file-system</code> как раз спасает от этого, если корневой слепок берёте с <code>/</code>. Загрузчик, UUID в fstab, криптозаголовки — rsync их «как файлы» скопирует, но загрузиться с такого каталога просто так нельзя. Для «откатить сайт» этого достаточно. Для «восстановить весь сервер» я не выдаю rsync-слепок за образ диска.</p>
<h5>Место на диске: почему du врёт, если мерить по одному каталогу</h5>
<p>Заходите в слепок — <code>du -sh 2026-08-27</code> показывает почти полный размер сайта. Так и должно быть: внутри каталога почти все файлы «настоящие» с точки зрения дерева, просто inode общие с соседом. Смотреть надо сумму по корню и сравнение «по отдельности vs вместе»:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">du -sh /backup/host-a
du -sh /backup/host-a/20*
du -sh --apparent-size /backup/host-a/20*</pre>
<p>Первая строка — сколько занято уникальными данными. Список по датам — каждый слепок выглядит толстым. <code>--apparent-size</code> ближе к «логическому» объёму дерева. Если уникальный <code>du</code> по корню прыгает на размер всего сайта после очередной ночи — hardlink не сработал. Типичные причины: слепки на разных ФС, первый прогон без <code>--link-dest</code> в уже существующий каталог с другими inode, массовый <code>touch</code>, копирование через промежуточный диск без сохранения inode.</p>
<p>Иноды кончаются раньше байтов, если мелких файлов много. WordPress с кэшем и тучей php это умеет:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">df -h /backup
df -i /backup</pre>
<p>Если <code>IUse%</code> под 80%, а место ещё есть — либо чистить старые слепки, либо не снимать то, что exclude должен был отсечь.</p>
<p>Ротация у меня тупая и предсказуемая: хранить 7 дневных, плюс «первое число месяца», если место позволяет. Удалять целиком каталог даты, не файлы изнутри:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash"># всё старше 14 дней, кроме 01-го числа
find /backup/host-a -mindepth 1 -maxdepth 1 -type d -name '20*' \
  | sort | head -n -14 | while read -r d; do
      b=$(basename "$d")
      case $b in *-01) continue ;; esac
      rm -rf "$d"
    done</pre>
<p><code>rm -rf</code> по hardlink-дереву безопасен: уменьшает nlink, чужие слепки не трогает. Не делать <code>chmod -R a-w</code> по слепку «чтобы никто не правил». chmod пишет в inode. Общий inode — права поменяются и во вчерашнем слепке. «Защита от записи» — монтированием раздела <code>ro</code> на чтение, отдельным пользователем без записи, не chmod по живым hardlink.</p>
<h5>Проверка restore: код 0 у rsync ничего не доказывает</h5>
<p>Ночной прогон вернул 0. Это значит: rsync отработал. Это не значит, что из слепка поднимется сайт. Я отдельно гоняю проверку, хотя бы раз в неделю, на копию в песочницу, не на прод.</p>
<p>Минимум, который реально ловит беду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">SNAP=/backup/host-a/2026-08-27
TEST=/tmp/restore-test.$$
mkdir -p "$TEST"

# копируем, не линкуем: иначе снова общий inode
rsync -aH --numeric-ids "$SNAP/" "$TEST/"

# дерево не пустое, ключевые файлы на месте
test -s "$TEST/wp-config.php"
test -d "$TEST/wp-content/uploads"

# сравнение числа файлов — расхождение сразу видно
echo -n "snap:  "; find "$SNAP" -type f | wc -l
echo -n "copy:  "; find "$TEST" -type f | wc -l

# несколько случайных файлов — содержимое не нулевое и совпадает
find "$SNAP" -type f | shuf -n 20 | while read -r f; do
  rel=${f#"$SNAP"/}
  cmp -s "$SNAP/$rel" "$TEST/$rel" || echo "DIFF $rel"
done</pre>
<p>Если это дамп базы — мало «файл не пустой». Нужен пробный импорт в отдельный экземпляр и <code>SELECT COUNT(*)</code> по жирной таблице, плюс открыть пару записей глазами. Дамп в 200 байт с ошибкой доступа тоже «файл на месте».</p>
<p>Если бэкап тянется по SSH — раз в неделю снимаю md5/sha256 списка ключевых файлов на источнике и в свежем слепке. Не всего дерева: достаточно конфигов, <code>.env</code>, пары известных загрузок. Расхождение mtime при том же содержимом меня не пугает. Расхождение содержимого — уже инцидент, даже если сайт «вроде открывается».</p>
<p>Что я ещё смотрю после ночного прогона, не дожидаясь недели:</p>
<ul>
<li>код выхода rsync и последние строки лога: <code>rsync error</code>, обрыв по SSH, <code>vanished files</code> пачкой;</li>
<li>размер корня <code>du -sh /backup/host-a</code> относительно вчера — скачок на полный объём сайта;</li>
<li>что симлинк <code>latest</code> указывает на сегодняшнюю дату, а не застрял на прошлой неделе;</li>
<li>что в слепке нет пустого дерева из-за опечатки в источнике (rsync прекрасно синхронизирует пустой каталог и с <code>--delete</code> вычистит новый слепок подчистую, старые не трогая).</li>
</ul>
<p>Пустой источник — отдельный класс аварии. Защита простая: если <code>find "$SRC" -type f | wc -l</code> меньше порога, скрипт выходит, не вызывая rsync. Порог свой для каждого дерева, не «больше нуля».</p>
<h5>Типичные поломки, которые я уже не ищу по второму разу</h5>
<p><strong>Слэш и не тот каталог.</strong> Источник без завершающего <code>/</code>, destination уже с предыдущим мусором. Слепок «есть», сайта внутри нет, зато есть вложенная лишняя директория.</p>
<p><strong>Два слепка на разных ФС.</strong> <code>--link-dest</code> молча деградирует в полное копирование. Лечится только тем, что <code>df</code> смотрят до, а не после письма «диск кончился».</p>
<p><strong>Запуск от пользователя, который не читает часть дерева.</strong> Rsync пропускает файлы с Permission denied и в конце может вернуть код 23. Часть людей глотает 23 как «ну почти ноль». Для бэкапа 23 — это дырка. Либо root на чтение, либо доступ по группе, либо явный список, и код 23 будит, а не пишется в лог «на всякий случай».</p>
<p><strong>Живая база в слепке.</strong> Сайт после restore «открывается», заказы за вчерашние полдня разъехались. Dump рядом со слепком файлов, одной датой.</p>
<p><strong>chmod/chown по слепкам.</strong> История переписана во всех датах, которые делили inode.</p>
<p><strong>Один и тот же destination каждый раз, а &#8211;link-dest в соседнюю копию «для экономии».</strong> Если destination не чистый каталог новой даты, а вечно живой <code>/backup/current</code>, вы снова приехали к схеме «есть только сегодня». <code>--link-dest</code> имеет смысл, когда новый слепок — новый каталог.</p>
<p><strong>Cron в локальной полночи и пик записи на сайте.</strong> Для файлового дерева это обычно терпимо: максимум файл середины заливки. Для заказов и почты — нет. Файлы ночью, дамп базы в окно минимальной нагрузки, не наоборот.</p>
<h5>Когда этого достаточно, а когда уже нет</h5>
<p><code>rsync --link-dest</code> хорошо закрывает: сайт, домашние каталоги, конфиги, каталог загрузок, «хочу зайти и забрать вчерашний wp-content». Прозрачность тут важнее степени сжатия. Я могу отдать человеку путь и сказать: копируй отсюда. Без fuse, без <code>restic mount</code>, без сюрприза «репозиторий не открывается, ключ от другого хоста».</p>
<p>Плохо закрывает: много маленьких постоянно меняющихся файлов (тотальный выигрыш hardlink падает), нужна дедупликация между разными машинами, нужен шифрованный репозиторий на чужой площадке. Туда Borg/restic. Не вместо проверки restore — поверх другой модели хранения.</p>
<p>Обёртки вроде rsnapshot делают ровно это же, плюс ротацию <code>hourly.0</code>. Если ставит человек, который не хочет писать скрипт — пусть ставит. Если уже наступил на chmod и на NFS, лучше свой скрипт на два экрана: в нём видно, куда смотреть, когда слепок внезапно стал полным по диску.</p>
<p>И последнее, без чего схему не считаю рабочей: хотя бы один успешный restore в отдельный каталог, с поднятым экземпляром или хотя бы с проверенным дампом. Пока этого не было, у вас не бэкап, а ночной rsync с красивыми датами на каталогах.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/inkrementalnyj-bekap-cherez-rsync-link-dest-polnye-slepki-hardlink-i-proverka-restore/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ремонт проводки задних дверей Opel Zafira A (левая и правая)</title>
		<link>https://remadmin.com/blog/auto/remont-provodki-zadnih-dverej-opel-zafira-a-levaya-i-pravaya/</link>
					<comments>https://remadmin.com/blog/auto/remont-provodki-zadnih-dverej-opel-zafira-a-levaya-i-pravaya/#respond</comments>
		
		<dc:creator><![CDATA[Cursor Blog]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 17:24:34 +0000</pubDate>
				<category><![CDATA[Авто]]></category>
		<category><![CDATA[Opel]]></category>
		<category><![CDATA[Zafira]]></category>
		<category><![CDATA[гофра]]></category>
		<category><![CDATA[проводка]]></category>
		<category><![CDATA[стеклоподъёмник]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7385</guid>

					<description><![CDATA[Обрыв жгута в гофре задних боковых дверей Zafira A. Левая и правая — разные жгуты и распиновка. Как снять разъём, таблица контактов и ремонт с запасом длины.]]></description>
										<content:encoded><![CDATA[<p>Речь про <strong>боковые задние двери</strong> Opel Zafira A — левую и правую. Не про пятую дверь багажника.</p>
<p>Типичная болячка платформы Zafira A / Astra G: в резиновой гофре между <strong>стойкой кузова</strong> и торцом двери переламывается жгут. Симптомы обычно по одной двери:</p>
<ul>
<li>стеклоподъёмник то работает, то нет;</li>
<li>не отрабатывает ЦЗ этой двери;</li>
<li>пропал или хрипит звук из этой двери (провода динамика идут тем же жгутом);</li>
<li>на приборке нет индикации открытой двери.</li>
</ul>
<p>Менять замок, мотор стеклоподъёмника и сам динамик чаще всего рано. Дверь изнутри разбирать не нужно: жгут от двери <strong>отстёгивается разъёмом на торце</strong>, а ремонтируется та часть проводки, которая уходит в кузов через гофру (стойка / порог).</p>
<p>Левая и правая — разные жгуты и разная распиновка. Чините правую — не копируйте цвета с левой.</p>
<h5>Почему ломается</h5>
<p>На передних дверях жгут между петлями живёт спокойнее. На задних — короткий жгут в узкой гофре, изоляция штатных жил жёсткая, длины почти в обрез. При закрытии двери гофра складывается вместе с проводами — усталостный обрыв в зоне перегиба, часто рядом с колодкой со стороны двери или там, где жгут входит в стойку.</p>
<p>Смятая, потрескавшаяся или уже разрезанная гофра — почти верный признак, что внутри уже плохо или скоро будет.</p>
<h5>Что нужно</h5>
<ul>
<li>мультиметр;</li>
<li>пайка или медные гильзы + термоусадка;</li>
<li>мягкий провод (силикон / фторопласт): сигнальные ~0.5–0.75 мм², силовые стеклоподъёмника заметно толще;</li>
<li>по желанию — более мягкая гофра и смазка, чтобы при закрытии двери провода уходили в стойку, а не ломались в перегибе.</li>
</ul>
<p>Минус АКБ снять сразу: толстый красный на мотор стекла часто под постоянным плюсом.</p>
<h5>Как добраться до жгута (дверь не разбираем)</h5>
<p>Всё делается снаружи торца двери и из салона у стойки.</p>
<ol>
<li>Открыть заднюю дверь. На переднем нижнем торце — многоконтактная колодка, вокруг неё стопорное кольцо (часто синее).</li>
<li>Нажать/сжать кольцо и вытянуть разъём <strong>из двери</strong>. Дверь остаётся в сборе: обшивку, динамик, замок не трогаем.</li>
<li>Снять пластиковое кольцо/фиксатор, которым гофра держится на колодке.</li>
<li>Со стороны кузова освободить гофру из отверстия в стойке. При необходимости снять накладку порога / низ облицовки стойки — так жгут удобнее вытянуть в салон.</li>
<li>Вытянуть в салон именно кузовную часть жгута вместе с гофрой и осмотреть жилы. Удобный приём: после снятия разъёма слегка прикрыть заднюю дверь и работать из проёма передней — жгут подаётся вперёд, к обрывам проще подобраться.</li>
</ol>
<p>Оборванный провод часто находится натяжением: целые держат, оборванный выезжает отдельно. Типичное место — зона постоянного перегиба в гофре.</p>
<p>До резки: фото колодки и маркировка каждого провода. Левый и правый жгуты потом легко перепутать.</p>
<h5>Чем левая дверь отличается от правой</h5>
<ul>
<li>на разборке жгуты идут отдельно «задняя левая» / «задняя правая»;</li>
<li>свои цепи: мотор стекла, активатор ЦЗ, концевик, динамик — у сторон разные;</li>
<li>расцветка тонких жил (особенно акустика и управление стеклом с водительского пульта) слева и справа не обязана совпадать — «по аналогии с другой дверью» как раз и ошибаются;</li>
<li>общее у обеих: толстый красный (+) и толстый коричневый (масса) мотора стеклоподъёмника — силовая пара, её ломает чаще всего.</li>
</ul>
<h5>Типовая распиновка разъёма (ориентир)</h5>
<p>Это колодка на стыке «дверь <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> жгут в кузов». Ниже — рабочий ориентир по ролям контактов (LHD, типовая комплектация). Пустые номера — резерв/опции. Точные цвета тонких жил сверяйте на своей стороне двери.</p>
<table>
<tbody>
<tr>
<th>Контакт (ориентир)</th>
<th>Типичный цвет</th>
<th>Сечение</th>
<th>Назначение</th>
</tr>
<tr>
<td>1</td>
<td>красный</td>
<td>~2.5 мм²</td>
<td>+12В мотора стеклоподъёмника (часто постоянный плюс)</td>
</tr>
<tr>
<td>2</td>
<td>коричневый</td>
<td>~2.5 мм²</td>
<td>масса мотора стеклоподъёмника</td>
</tr>
<tr>
<td>3</td>
<td>серо‑белый</td>
<td>~0.75</td>
<td>центральный замок</td>
</tr>
<tr>
<td>4</td>
<td>белый</td>
<td>~0.75</td>
<td>центральный замок</td>
</tr>
<tr>
<td>5</td>
<td>чёрно‑зелёный</td>
<td>~0.75</td>
<td>доп. запирание / anti‑theft (если есть)</td>
</tr>
<tr>
<td>6</td>
<td>серый</td>
<td>~0.5</td>
<td>концевик открытой двери</td>
</tr>
<tr>
<td>9</td>
<td>жёлто‑коричневый</td>
<td>~0.5</td>
<td>служебные/охранные линии (по комплектации)</td>
</tr>
<tr>
<td>10</td>
<td>бело‑синий</td>
<td>~0.5</td>
<td>блокировка задних стеклоподъёмников</td>
</tr>
<tr>
<td>11</td>
<td>фиолетово‑зелёный</td>
<td>~0.5</td>
<td>управление электростеклом</td>
</tr>
<tr>
<td>12</td>
<td>фиолетово‑коричневый</td>
<td>~0.5</td>
<td>управление электростеклом</td>
</tr>
<tr>
<td>16</td>
<td>зелёный (часто)</td>
<td>~0.75</td>
<td>динамик (тем же жгутом в кузов)</td>
</tr>
<tr>
<td>17</td>
<td>коричнево‑зелёный (часто)</td>
<td>~0.75</td>
<td>динамик</td>
</tr>
<tr>
<td>19</td>
<td>коричнево‑чёрный</td>
<td>~0.5</td>
<td>комфортное закрытие стёкол (если есть)</td>
</tr>
</tbody>
</table>
<p>Перед наращиванием: прозвонка от потребителя до обрыва и сверка цветов на стойке и на ответной части <strong>этой же</strong> двери. Силовую пару с сигнальными не путать. Даже если «умерло» только стекло — осмотрите соседние жилы.</p>
<h5>Как ремонтировать</h5>
<ol>
<li>Вырезать повреждённый участок на кузовной стороне жгута (в зоне гофры / входа в стойку).</li>
<li>Вставить мягкий провод с запасом длины, чтобы жгут мог уходить в стойку при закрытии двери, а не стоять внатяг.</li>
<li>Стыки (пайка + термоусадка или обжим) вынести <strong>из зоны постоянного перегиба</strong> — внутрь стойки/порога, не оставлять «шишку» посередине гофры.</li>
<li>Собрать гофру, воткнуть разъём обратно в торец двери, проверить на этой двери: стекло, ЦЗ, звук, концевик.</li>
</ol>
<p>Чтобы гофра снова не убила жгут: чуть смазки на провода и/или более мягкая гофра — при закрытии двери жилы должны ускользать в кузов, а гофра сжиматься сама.</p>
<h5>Готовые ремкомплекты с маркетплейсов</h5>
<p>Можно не нарезать провода вручную: на маркетплейсах продают готовые ремкомплекты жгута задней двери (мягкая проводка + разъём/пины под штатную колодку). У Опелей они с виду похожи, но <strong>не взаимозаменяемые вслепую</strong>.</p>
<ul>
<li>отличаются по поколению (Zafira A ≠ Zafira B, ловите дорест/рест);</li>
<li>отдельно под левую и под правую заднюю дверь;</li>
<li>сверьте фото разъёма и комплектацию в карточке со своей колодкой до заказа.</li>
</ul>
<p>Берите ремкомплект <strong>именно под свою машину</strong> и <strong>именно под ту дверь</strong>, которую чините.</p>
<p>Итого: дверь не разбираем. Отщёлкнули разъём на торце, вытянули кузовную часть жгута из стойки, нарастили/поменяли участок в зоне гофры, собрали обратно. Левая и правая — разные жгуты; цвета с «другой стороны» не копировать.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/auto/remont-provodki-zadnih-dverej-opel-zafira-a-levaya-i-pravaya/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Steal time и странный load на VPS: как отличить нехватку CPU у гипервизора от реальной нагрузки</title>
		<link>https://remadmin.com/blog/linux/steal-time-i-strannyj-load-na-vps-kak-otlichit-nehvatku-cpu-u-gipervizora-ot-realnoj-nagruzki/</link>
					<comments>https://remadmin.com/blog/linux/steal-time-i-strannyj-load-na-vps-kak-otlichit-nehvatku-cpu-u-gipervizora-ot-realnoj-nagruzki/#respond</comments>
		
		<dc:creator><![CDATA[Cursor Blog]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 16:57:09 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iowait]]></category>
		<category><![CDATA[steal time]]></category>
		<category><![CDATA[VPS]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7382</guid>

					<description><![CDATA[Load на VPS врёт: очередь растёт и от диска, и от steal time гипервизора, и от квоты cgroup. Как за пять минут отличить нехватку CPU у ноды от реальной нагрузки приложения — по top, mpstat, iostat и cpu.stat.]]></description>
										<content:encoded><![CDATA[<p>Типичная заявка: «сайт тормозит, load под десятку, добавьте ядер». Захожу на VPS — два vCPU, load 8–9, в <code>top</code> почти всё idle. PHP-FPM в состоянии D, MySQL тоже. Хостер клянётся, что «ресурсы выданы полностью». Дальше обычно начинается шаманство: крутят <code>pm.max_children</code>, рестартуют php-fpm, добавляют swap. Это почти никогда не то место, где лежит причина.</p>
<p>На виртуалке load врёт чаще, чем на железе. Он не отделяет «мои процессы жрут CPU» от «диск лёг» и от «гипервизор забрал кванты времени у соседа». Если не разложить эти три штуки, будете лечить не того.</p>
<h5>Что на самом деле считает load average</h5>
<p>Load — это не «загрузка процессора в процентах». Это средняя длина очереди: сколько задач либо готовы бежать на CPU, либо спят в uninterruptible sleep (состояние D, обычно ожидание диска или NFS).</p>
<p>Поэтому картина «load 12 при 70% idle» на двух ядрах — нормальная, если в D висит десяток php-fpm, а диск отвечает по 80–200 мс. Процессор свободен, очередь растёт. С steal time та же история: задача хочет CPU, гипервизор её не планирует, очередь тоже растёт, а в <code>top</code> вы видите idle плюс <code>st</code>.</p>
<p>Смотрю сразу три числа: load за 1/5/15 минут и сколько ядер (<code>nproc</code>). Load 4 на четырёх ядрах — ещё можно жить. Load 4 на одном vCPU уже несколько минут — уже инцидент. Пятнадцатиминутный load запаздывает: если тормоза начались три минуты назад, ориентируйтесь на единицу и на живые счётчики, не на «среднее за четверть часа».</p>
<h5>Три столбца в top, без которых диагностика — гадание</h5>
<p>В шапке <code>top</code> (клавиша <code>1</code> включает разбивку по ядрам) мне важна строка CPU:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">%Cpu(s):  8.4 us,  3.1 sy,  0.0 ni, 41.0 id, 27.2 wa,  0.0 hi,  1.1 si, 19.2 st</pre>
<p>Коротко по делу:</p>
<ul>
<li><code>us</code> + <code>sy</code> — ваши процессы реально крутят код. Вот это «нехватка CPU у приложения».</li>
<li><code>id</code> — простой. Высокий idle сам по себе ничего не лечит и ничего не доказывает.</li>
<li><code>wa</code> — iowait: процессор свободен, но есть незавершённый I/O. Это не «диск загрузил CPU», это ожидание.</li>
<li><code>st</code> — steal: гипервизор отдал эти тики не вам. Ваша виртуалка хотела считать — ей не дали.</li>
<li><code>si</code> — softirq. Если внезапно большой на фоне сети, смотрю пакеты и netfilter, а не PHP.</li>
</ul>
<p>Правило, которым я пользуюсь в первые 30 секунд: если <code>us+sy</code> низкие, а load высокий — это не «надо больше ядер приложению». Это либо диск, либо гипервизор, либо cgroup-троттлинг, который в <code>st</code> может вообще не попасть.</p>
<h5>Steal time: когда виноват не ваш код, а сосед по ноде</h5>
<p>Steal — доля времени, когда vCPU был готов работать, но гипервизор забрал слот. На нормально выделенном KVM с гарантией CPU <code>st</code> обычно около нуля, редкие всплески на 1–2% можно не драматизировать. На дешёвых VPS вечером я регулярно вижу 10–30% steal пачками по несколько минут. Формально у вас «2 ядра», фактически в этот момент — полтора или меньше.</p>
<p>Как это ощущается снаружи: сайт отвечает рывками, CPU в панели хостера «зелёный», процессы в <code>top</code> не жрут по 100%, латентность прыгает без изменения трафика. Внутри в это же время растёт очередь PHP/очередь диска — не потому что MySQL внезапно стал писать в десять раз больше, а потому что кванты CPU приходят дыряво.</p>
<p>Подтверждаю не одним кадром <code>top</code>, а рядом:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">nproc
uptime
mpstat -P ALL 1 30
vmstat 1 30</pre>
<p>В <code>mpstat</code> смотрю столбец <code>%steal</code> по каждому vCPU. Если steal сидит на всех ядрах стабильно выше примерно 5–8% и при этом <code>%usr/%sys</code> не упёрлись в потолок — это не ваше приложение «уперлось в CPU». Это нода. Если steal скачет нуль–сорок нуль–сорок синхронно на всех vCPU — классика оверселла, «шумный сосед» или ночной бэкап гипервизора.</p>
<p>В <code>vmstat</code> те же буквы в последнем столбце <code>st</code>, плюс <code>r</code> (run queue) и <code>b</code> (blocked on IO). Высокий <code>r</code> при низком <code>us</code> и ненулевом <code>st</code> — задачи ждут планировщика, а не вашего кода.</p>
<p>Важный нюанс: на части облаков CPU режут не через steal, а через кредиты/квоты. Тогда <code>st</code> может быть нулевым, а приложение всё равно ползёт. Это уже следующий раздел, не путайте с «честным» KVM-steal.</p>
<h5>Iowait: load большой, процессор скучает, диск не отвечает</h5>
<p>Вторая частая ловушка. Load 10, idle 60%, <code>wa</code> 30–40%. В <code>ps</code> куча процессов в D. Человек видит load и думает «CPU». Нет: очередь — на I/O.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">ps -eo pid,user,state,wchan:24,etime,cmd | awk 'NR==1 || $3 ~ /D/'
iostat -xz 1 20
vmstat 1 20</pre>
<p>В <code>iostat</code> мне важны не «красивые» MB/s, а <code>await</code>, <code>aqu-sz</code> и <code>%util</code>. Если на vda/vdb await уехал в десятки–сотни миллисекунд при скромном объёме записи — это не «MySQL плохо настроен», это сторадж ноды. На дешёвом VPS диск почти всегда общий. Сосед запустил бэкап — ваш InnoDB начинает ждать fsync.</p>
<p>Отдельно проверяю swap:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">free -h
vmstat 1 10</pre>
<p>Ненулевые <code>si/so</code> в <code>vmstat</code> плюс высокий iowait — это уже не «мало CPU», это память кончилась и система молотит страницы. Добавление ядер тут бесполезно. И увеличение <code>pm.max_children</code> в такой ситуации обычно делает хуже: больше процессов — больше давления на диск и RAM.</p>
<p>NFS, CIFS, зависший iSCSI дают ту же картину: D-state, растущий load, CPU почти idle. <code>wchan</code> в <code>ps</code> часто прямо намекает (<code>io_schedule</code>, <code>nfs</code>, <code>wait_on_page</code>). Не лечите это рестартом php-fpm, пока не поняли, на чём они спят.</p>
<h5>Реальная нагрузка: когда процессы правда жрут CPU</h5>
<p>Это самый скучный и самый честный случай. <code>us+sy</code> под 80–100% на всех ядрах, steal около нуля, iowait низкий, в <code>top</code> по CPU видны конкретные pid: php-fpm, mysqld, node, python. Load примерно согласован с числом ядер и run queue.</p>
<p>Тогда уже имеет смысл:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">pidstat -u 1 10
ps -eo pid,user,pcpu,pmem,cmd --sort=-pcpu | head
# если есть perf и можно ненадолго:
# perf top -g</pre>
<p>Искать медленный запрос, воркера без лимита, cron, который внезапно переложил всю таблицу. Здесь апгрейд CPU поможет. На steal и на дохлый диск — нет, вы просто будете дороже ждать то же самое.</p>
<p>Не путайте короткий всплеск (деплой, прогрев кэша, один тяжёлый отчёт) с системной нехваткой. Смотрите 5-минутное окно, не один кадр.</p>
<h5>Четвёртая ловушка: cgroup throttle без steal</h5>
<p>На контейнерах (LXC, часть «VPS из панели», Kubernetes) CPU часто режут квотой cgroup, а не классическим steal. В <code>top</code> тогда <code>st=0</code>, idle может быть приличным, а латентность всё равно плохая: вас просто не пускают на CPU сверх квоты.</p>
<p>На cgroup v2:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash">cat /sys/fs/cgroup/cpu.stat
cat /sys/fs/cgroup/cpu.max
cat /proc/pressure/cpu</pre>
<p>В <code>cpu.stat</code> смотрю <code>nr_throttled</code> и <code>throttled_usec</code>. Если throttled растёт на глазах — вас режут. <code>cpu.max</code> вида <code>20000 100000</code> на двух видимых vCPU означает, что «два ядра» в <code>nproc</code> — картинка, а лимит другой.</p>
<p>PSI (<code>/proc/pressure/cpu</code> и <code>io</code>) удобен тем, что показывает stall some/full за 10/60/300 секунд. <code>full</code> по CPU — никто не мог работать. Это ближе к правде, чем load, когда хочется понять «прямо сейчас нас душили или пять минут назад».</p>
<p>На старых OpenVZ/Virtuozzo картина ещё мутнее: иногда steal есть, иногда только failcnt в beancounters. Если попали на такое — не делайте выводы по одному <code>top</code>, смотрите лимиты панели и <code>cpu.stat</code>.</p>
<h5>Порядок, которым я отличаю гипервизор от реальной нагрузки</h5>
<p>Не распухающий чеклист, а последовательность на пять минут.</p>
<ol>
<li>Снять размер машины и load: <code>nproc</code>, <code>uptime</code>, <code>free -h</code>. Понять, не swap ли это вообще.</li>
<li>Живой <code>top</code>, клавиша <code>1</code>. Записать us/sy/id/wa/st. Не скриншот «процессы», а шапку CPU.</li>
<li><code>mpstat -P ALL 1 30</code> и <code>vmstat 1 30</code> — steal стабильный или вспышками, run queue, blocked.</li>
<li>Если wa заметный — <code>iostat -xz 1 20</code> и список D-процессов с <code>wchan</code>.</li>
<li>Если st≈0 и CPU не упирается — <code>cpu.stat</code> / <code>cpu.max</code> / <code>/proc/pressure/cpu</code>.</li>
<li>Только если us+sy высокие и лимиты не душат — иду в pidstat и уже в приложение.</li>
</ol>
<p>За эти пять минут обычно ясно, в какую из четырёх корзин класть инцидент. Дальше уже либо тикет хостеру с цифрами, либо диск, либо квота, либо профилирование PHP/SQL.</p>
<h5>Что не делать, пока не поставили диагноз</h5>
<p>Не поднимать <code>pm.max_children</code> «чтобы очередь рассосалась». На iowait и на steal это увеличивает очередь, а не уменьшает.</p>
<p>Не добавлять swap «для запаса», если si/so уже ненулевые. Вы лечите нехватку RAM ещё большим iowait.</p>
<p>Не рестартить MySQL по кругу, если await диска сотни миллисекунд. Рестарт в этот момент — лотерея с порчей и долгим recovery.</p>
<p>Не просить «ещё два ядра» у хостера, имея на руках только load average. Load на оверсолде растёт и от steal, и от диска. Без <code>mpstat/iostat</code> вам продадут тот же оверсолл подороже — или, что чаще, просто перекинут на такую же ноду.</p>
<h5>Как разговаривать с хостером, чтобы это не было «сайт тормозит»</h5>
<p>Тикет без цифр на оверсолде заканчивается шаблоном «на ноде всё хорошо, смотрите приложение». Я прикладываю 30 секунд <code>mpstat -P ALL</code>, кусок <code>vmstat</code>, если надо — <code>iostat</code>, время (UTC), и формулировку в духе: «на 2 vCPU стабильно %steal 15–25 при %usr+%sys &lt; 30, load растёт, iowait такой-то. Прошу проверить contention на ноде / переезд». Не имена клиентов, не внутренние IP, не «у нас прод упал».</p>
<p>Если хостер нормальный, на устойчивом steal они переезжают. Если нет — имеет смысл менять площадку, а не тюнить opcache. Оптимизация приложения на 10% не лечит потерю четверти CPU каждую минуту.</p>
<p>Для себя оставляю те же логи локально на время разбора. Через час steal может исчезнуть, и вы останетесь с «ну у нас сейчас всё зелёное».</p>
<h5>Коротко: как не перепутать корзины</h5>
<p><strong>Реальная нагрузка:</strong> us+sy высокие, st≈0, wa низкий, в top видны конкретные процессы. Лечите код, запросы, лишние воркеры. Ядра помогут.</p>
<p><strong>Нехватка CPU у гипервизора:</strong> st стабильно заметный, us+sy не упираются, load и латентность прыгают без роста трафика. Лечите площадку, не php.ini.</p>
<p><strong>Диск:</strong> wa высокий, процессы в D, await большой. Часто на тех же дешёвых VPS соседствует со steal — нода оверsold и по CPU, и по стораджу. Сначала цифры, потом выводы.</p>
<p><strong>Квота cgroup:</strong> st=0, cpu.stat throttled растёт, PSI full по CPU. «Два ядра» в панели ≠ два ядра в планировщике.</p>
<p>Пока эти четыре строки не разложены, любой совет «увеличьте лимиты PHP» — гадание. Снимается это стандартными утилитами за несколько минут, без агентов и без панелей. Панель хостера в этот момент почти всегда врёт в оптимистичную сторону: она рисует «выданные» ядра, а не те, которые вам реально отдали.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/steal-time-i-strannyj-load-na-vps-kak-otlichit-nehvatku-cpu-u-gipervizora-ot-realnoj-nagruzki/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Скандинавский свет на Opel Zafira A своими руками</title>
		<link>https://remadmin.com/blog/auto/skandinavskij-svet-na-opel-zafira-a-svoimi-rukami/</link>
					<comments>https://remadmin.com/blog/auto/skandinavskij-svet-na-opel-zafira-a-svoimi-rukami/#respond</comments>
		
		<dc:creator><![CDATA[Cursor Blog]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 16:25:14 +0000</pubDate>
				<category><![CDATA[Авто]]></category>
		<category><![CDATA[Opel]]></category>
		<category><![CDATA[Zafira]]></category>
		<category><![CDATA[ДХО]]></category>
		<category><![CDATA[реле]]></category>
		<category><![CDATA[скандинавский свет]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7372</guid>

					<description><![CDATA[Оригинальное реле скандинавского света на Zafira A почти не найти. Собираем модуль на обычном автомобильном реле за копейки: втыкается в штатный разъём, штатная крутилка света остаётся рабочей.]]></description>
										<content:encoded><![CDATA[<p>Сегодня разбирался со скандинавским светом на Opel Zafira A. Оригинальное реле (GM 13101741 / 6238618 / 90464777) — это не просто «релюшка», а целый блок на 8–9 контактов, и купить его нормально почти нереально: разве что с разборки, да и то с лотереей. Программно, как на Zafira B через OP-COM, тут ничего не включить — только железо.</p>
<p>Зато разъём под это реле у большинства машин уже есть. И из обычного автомобильного реле за копейки получается очень вменяемый самодельный модуль: завели мотор — загорелся ближний (и при желании габариты с приборкой), заглушили — всё погасло, штатная крутилка света продолжает работать как надо.</p>
<h5>Где искать разъём</h5>
<p>Он не болтается на виду. Откройте маленький бардачок слева от руля (под переключателем света), снимите его — там салонный блок предохранителей. Дальше фонарик и толстый жгут, который уходит от блока вглубь торпеды.</p>
<p>Ищите чёрную пластиковую колодку на 8 контактов. Обычно она плотно примотана к жгуту изолентой — из‑за этого многие думают, что разъёма нет, хотя на деле это просто «аппендикс» на косе. Увидел подозрительное утолщение с нужными цветами проводов — смело разрезайте изоленту.</p>
<p>Важный момент: на самых ранних машинах (типа 1999 года) и в базовых южных комплектациях разъёма могло не быть — у Опелей тех лет была лотерея с проводкой. Шанс найти его большой, но не стопроцентный. Если колодки нет — ту же схему можно собрать, врезаясь к проводам у переключателя света и замка зажигания, но это уже менее аккуратно.</p>
<h5>Распиновка штатной колодки (реле K59)</h5>
<p>Цвета — европейские, по DIN. Даже если цифры на пластике стёрлись, по проводу всё равно ориентируешься.</p>
<table>
<tbody>
<tr>
<th>Пин</th>
<th>Цвет</th>
<th>За что отвечает</th>
</tr>
<tr>
<td>1</td>
<td>Коричневый</td>
<td>Масса (−)</td>
</tr>
<tr>
<td>2</td>
<td>Серо‑зелёный</td>
<td>Подсветка приборки, кнопок и заднего номера</td>
</tr>
<tr>
<td>3</td>
<td>Сине‑белый</td>
<td>Сигнал генератора D+. +12В появляется, когда мотор заведён и генератор отдаёт ток</td>
</tr>
<tr>
<td>4</td>
<td>Жёлтый (толстый)</td>
<td>Ближний свет</td>
</tr>
<tr>
<td>5</td>
<td>Чёрный (толстый)</td>
<td>+12В от замка зажигания (клемма 15)</td>
</tr>
<tr>
<td>6</td>
<td>Серо‑чёрный</td>
<td>Левые габариты</td>
</tr>
<tr>
<td>7</td>
<td>Серо‑красный</td>
<td>Правые габариты</td>
</tr>
<tr>
<td>8</td>
<td>Белый</td>
<td>Дальний свет (для самоделки не нужен)</td>
</tr>
</tbody>
</table>
<p>Белый (пин 8) в заводском блоке нужен для хитрой логики: при «моргании» дальним на долю секунды гасить ближний. На обычном реле JD1912 это гнездо просто оставляем пустым — штатный дальний от этого не ломается.</p>
<p>Чёрный и жёлтый заметно толще остальных — силовые. На контакты 30 и 87 реле берите провод не тоньше 1.5 мм², иначе будет греться.</p>
<h5>Простое решение: обычное реле JD1912</h5>
<p>Можно взять спецреле времени вроде «Регтайм‑3» и получить задержку в пару секунд после старта. Но если честно — для машины это скорее приятность, а не необходимость, да и выходит заметно дороже.</p>
<p>Сине‑белый провод (D+) сам по себе даёт нужную логику:</p>
<ul>
<li>зажигание включили — на нём 0 В;</li>
<li>крутите стартер — тоже 0 В, фары не жрут аккумулятор;</li>
<li>мотор завелся, генератор пошёл в плюс — на проводе +12/+14 В, реле щёлкнуло, свет загорелся;</li>
<li>заглушили — питание пропало, свет погас.</li>
</ul>
<p>Реле JD1912 (12В, 30–40А) для этой задачи подходит идеально. Две лампы ближнего + габариты + приборка тянут примерно 12–15 А, запас по току нормальный. На донышке те же контакты 30 / 85 / 86 / 87 — ничего изобретать не надо. К реле сразу берите пластиковую колодку («фишку» с проводами) — копейки, а жить с ней сильно приятнее.</p>
<p>По сути нужен минимальный набор из автомагазина и радиодеталей:</p>
<ul>
<li>обычное 4‑контактное реле 12В (JD1912 или любое ВАЗ/ГАЗ);</li>
<li>колодка под реле;</li>
<li>диоды 10A10 или 6A10 — три штуки, если цепляете габариты и приборку;</li>
<li>клеммы «папа» 6.3 мм — шесть штук.</li>
</ul>
<p>Всё это сущие копейки, а модуль втыкается в штатный разъём без резки родной проводки.</p>
<h5>Самый простой вариант: только ближний</h5>
<p>Если подать питание с реле только на жёлтый провод (пин 4), загорятся исключительно фары ближнего. Ни задние фонари, ни мелкие передние габариты, ни номер, ни приборка — ничего. В Опеле цепи ближнего и габаритов физически разделены.</p>
<p>И это даже удобно как дневные ходовые:</p>
<ul>
<li>схема из четырёх проводов, без диодов, собирается за десять минут;</li>
<li>днём сзади ничего лишнего не горит, лампочки в задних фонарях и подсветке номера отдыхают;</li>
<li>вечером или в тоннеле привычка одна: повернул штатную крутилку. Тёмная приборка как раз подсказывает, что забыли.</li>
</ul>
<p>Подключение:</p>
<ul>
<li>пин 1 (коричневый) → контакт 85 реле (масса);</li>
<li>пин 3 (сине‑белый) → контакт 86 (управление от генератора);</li>
<li>пин 5 (чёрный) → контакт 30 (+12В от зажигания);</li>
<li>контакт 87 → пин 4 (жёлтый, ближний).</li>
</ul>
<h5>Вариант «по‑человечески»: ближний + габариты + приборка</h5>
<p>Если хочется, чтобы при заведённом моторе горело всё «по кругу», от контакта 87 реле делаем разветвление:</p>
<ul>
<li>напрямую на пин 4 (жёлтый) — ближний;</li>
<li>через диод (полоской от реле) на пин 6 — левые габариты;</li>
<li>через диод на пин 7 — правые габариты;</li>
<li>через диод на пин 2 — подсветка приборки и номера.</li>
</ul>
<p>Диоды обязательны. Без них:</p>
<ul>
<li>скрутите левые и правые габариты в одну кучу — убьёте парковочные огни (когда на выключенном зажигании оставляете поворотник и должна светиться только одна сторона);</li>
<li>воткнёте приборку без диода — при ручном включении габаритов ток пойдёт обратно на скрутку и зажжёт ближний.</li>
</ul>
<p>Диод тут как ниппель: пускает ток от вашего реле к лампам и не пускает обратно в штатную схему.</p>
<p>Кстати, заводское опелевское реле приборку специально не включает. Логика безопасности: заехали в тёмный тоннель — тёмная панель намекает, что у вас только дневной режим, пора включить нормальный свет. Если вам днём комфортнее с подсвеченной приборкой — третий диод на пин 2, штатной проводке это не вредит.</p>
<h5>Как себя ведёт крутилка света вместе с самоделкой</h5>
<p>Самодельное реле и штатный переключатель работают параллельно и просто дублируют друг друга. При заведённом моторе:</p>
<p><strong>Положение 0.</strong> Горят ближний, габариты (если вы их завели через диоды), приборка/номер. Дальний можно только «моргнуть». ПТФ не включить.</p>
<p><strong>Положение 1 (габариты).</strong> Визуально почти ничего не меняется. Появляются передние ПТФ (если есть). Постоянный дальний всё ещё не фиксируется.</p>
<p><strong>Положение 2 (ближний).</strong> Снова визуально то же самое, но уже можно включить постоянный дальний и задние противотуманки.</p>
<p>Заглушили мотор — ваше реле обесточилось, крутилка снова главная:</p>
<ul>
<li>стояла на 0 — машина погасла;</li>
<li>стояла на 1 — ближний погас, габариты остались (парковка);</li>
<li>стояла на 2 — ближний погас, габариты горят, при открытии двери запищит напоминалка.</li>
</ul>
<p>И да: когда включаете дальний штатно, ближний и габариты продолжают гореть. В фарах Zafira A ближний и дальний — разные лампы в разных секциях, не одна H4 с двумя нитями. Самоделка эту логику не ломает.</p>
<h5>Сборка</h5>
<p>Собираете «паука» на клеммах «папа» 6.3 мм, проверяете мультиметром, заливаете термоклеем / стягиваете изолентой / прячете в маленький корпус — и вставляете в штатную колодку. Родную проводку резать не нужно.</p>
<p>Если принципиально хочется именно задержку в пару секунд после старта — не обязательно брать дорогое автореле времени. На маркетплейсах полно недорогих плат «модуль задержки включения 12V на NE555», с крутилкой примерно на 0–10 секунд и уже встроенным реле. Логика проводов та же.</p>
<p>Получается просто, дёшево и по смыслу очень близко к тому, что задумал завод — только без поисков мифического оригинального блока по разборкам.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/auto/skandinavskij-svet-na-opel-zafira-a-svoimi-rukami/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как безопасно удалить пользователя в Ubuntu Linux</title>
		<link>https://remadmin.com/blog/linux/kak-bezopasno-udalit-polzovatelya-v-ubuntu-linux/</link>
					<comments>https://remadmin.com/blog/linux/kak-bezopasno-udalit-polzovatelya-v-ubuntu-linux/#respond</comments>
		
		<dc:creator><![CDATA[REMADMIN]]></dc:creator>
		<pubDate>Thu, 29 Feb 2024 09:16:30 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[шпаргалка]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7289</guid>

					<description><![CDATA[Умение эффективно удалять пользователей является ключевым навыком для специалистов в области системного администрирования. Устаревшие учетные записи могут представлять угрозу для безопасности сервера, поэтому их следует регулярно удалять. В данной статье мы предоставим информацию о процессе удаления пользователей в Linux Ubuntu и расскажем о необходимых шагах перед выполнением этой операции, чтобы избежать негативных последствий для системы. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Умение эффективно удалять пользователей является ключевым навыком для специалистов в области системного администрирования. Устаревшие учетные записи могут представлять угрозу для безопасности сервера, поэтому их следует регулярно удалять. В данной статье мы предоставим информацию о процессе удаления пользователей в Linux Ubuntu и расскажем о необходимых шагах перед выполнением этой операции, чтобы избежать негативных последствий для системы.</p>
<h6>Проверяем, авторизован ли пользователь на сервере, и есть ли запущенные от него процессы</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">who
sudo ps -u username</pre>
<h6>Убиваем процессы пользователя, если они есть</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">sudo killall -9 -u username</pre>
<h6>Отключаем все задачи планировщика cron этого пользователя</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo crontab -r -u username</pre>
<h6>Собственно удаляем пользователя</h6>
<p>Если нужно удалить пользователя, но оставить его домашнюю директорию, то выполняем:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">sudo deluser username</pre>
<p>Если нужно удалить всё, включая и его домашнюю директорию, то выполняем команду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo deluser --remove-home username</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/kak-bezopasno-udalit-polzovatelya-v-ubuntu-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Поиск в файлах по содержимому в Linux</title>
		<link>https://remadmin.com/blog/linux/poisk-v-fajlah-po-soderzhimomu-v-linux/</link>
					<comments>https://remadmin.com/blog/linux/poisk-v-fajlah-po-soderzhimomu-v-linux/#respond</comments>
		
		<dc:creator><![CDATA[REMADMIN]]></dc:creator>
		<pubDate>Wed, 28 Feb 2024 13:51:01 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[шпаргалка]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7301</guid>

					<description><![CDATA[Linux, как операционная система с открытым исходным кодом, обеспечивает пользователей мощными инструментами для работы с файловой системой. Один из ключевых аспектов этой работы &#8211; поиск файлов по их содержимому. В данной статье мы рассмотрим различные методы и инструменты для проведения эффективного поиска в файлах по их содержимому в Linux. Команда grep grep является одной из [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Linux, как операционная система с открытым исходным кодом, обеспечивает пользователей мощными инструментами для работы с файловой системой. Один из ключевых аспектов этой работы &#8211; поиск файлов по их содержимому. В данной статье мы рассмотрим различные методы и инструменты для проведения эффективного поиска в файлах по их содержимому в Linux.</p>
<h5>Команда grep</h5>
<p><strong>grep</strong> является одной из наиболее популярных и мощных утилит для поиска текстовых данных в файлах. Команда <strong>grep</strong> позволяет указать строку или регулярное выражение для поиска и применяется следующим образом:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">grep "ключевое_слово" /путь/к/файлу.txt</pre>
<p>Для рекурсивного поиска в каталогах вы можете использовать опцию <strong>-r</strong>, позволяющую искать вложенные файлы и подкаталоги. Пример:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">grep -r "искомый_текст" /путь/к/каталогу</pre>
<h5>find и xargs совместно</h5>
<p>Комбинация команд <strong>find</strong> и <strong>xargs</strong> позволяет находить файлы с заданными критериями и передавать их в качестве аргументов для других команд. Пример:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">find /путь -type f -exec grep "искомый_текст" {} +</pre>
<p>В данном примере <strong>find</strong> находит все файлы (-type f) в указанном пути и передает их в <strong>grep</strong>, где производится поиск заданного текста.</p>
<h5>find и grep совместно</h5>
<p>Комбинирование <strong>find</strong> и <strong>grep</strong> позволяет более тонко настраивать поиск. Например, поиск в файлах, измененных за последние 7 дней:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">find /путь -type f -mtime -7 -exec grep "искомый_текст" {} +</pre>
<p>Поиск в файлах по содержимому в Linux может быть выполнен различными способами, и выбор зависит от конкретной задачи. Описанные инструменты предоставляют гибкость и мощь для проведения поиска в текстовых файлах, а их комбинация может быть использована для достижения оптимальных результатов. Учитывайте особенности каждого инструмента и выбирайте подходящий в зависимости от контекста использования.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/poisk-v-fajlah-po-soderzhimomu-v-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Руководство по работе с планировщиком задач cron</title>
		<link>https://remadmin.com/blog/linux/rukovodstvo-po-rabote-s-planirovshhikom-zadach-cron/</link>
					<comments>https://remadmin.com/blog/linux/rukovodstvo-po-rabote-s-planirovshhikom-zadach-cron/#respond</comments>
		
		<dc:creator><![CDATA[REMADMIN]]></dc:creator>
		<pubDate>Mon, 26 Feb 2024 11:57:07 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[шпаргалка]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7298</guid>

					<description><![CDATA[Linux, как операционная система, предоставляет множество инструментов для автоматизации различных задач. Один из таких инструментов — планировщик задач cron. В этой статье мы рассмотрим, как эффективно использовать планировщик в Linux для автоматизации рутинных операций. Что такое cron? Cron — это стандартный инструмент в Unix-подобных системах, предназначенный для выполнения задач в установленное время или периодически. Он [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Linux, как операционная система, предоставляет множество инструментов для автоматизации различных задач. Один из таких инструментов — планировщик задач cron. В этой статье мы рассмотрим, как эффективно использовать планировщик в Linux для автоматизации рутинных операций.</p>
<h5>Что такое cron?</h5>
<p>Cron — это стандартный инструмент в Unix-подобных системах, предназначенный для выполнения задач в установленное время или периодически. Он основан на файлах cron, в которых определены задания и их расписание. Эти файлы хранятся в каталоге <strong>/etc/cron.d/</strong> или <strong>/var/spool/cron/</strong> и обычно недоступны для редактирования напрямую.</p>
<h5>Работа с cron</h5>
<h6>Создание и редактирование cron-задач</h6>
<p>Для создания новой задачи, или редактирования существующих, используется команда:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">crontab -e</pre>
<p>Она открывает текстовый редактор, в котором можно определить расписание и команду для выполнения. Например, чтобы запустить скрипт &#8220;myscript.sh&#8221; каждый день в 2 часа ночи, добавьте следующую строку:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">0 2 * * * /путь/к/скрипту/myscript.sh</pre>
<p>Редактировать команды другого пользователя можно так:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo crontab -u username -e</pre>
<h6>Листинг задач</h6>
<p>Список текущих cron-задач можно просмотреть с помощью команды:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">crontab -l</pre>
<p>Это полезно для проверки текущего расписания и быстрого определения того, что уже настроено.</p>
<p>Вывести задачи другого пользователя можно так:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">sudo crontab -u username -l</pre>
<h6>Удаление задач</h6>
<p>Эта команда удаляет все cron-задачи пользователя:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">crontab -r</pre>
<p>Если необходимо удалить конкретную задачу, используйте:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">crontab -l</pre>
<p>чтобы увидеть ее номер, а затем:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">crontab -r номер</pre>
<h5>Вывод результата в лог-файл</h5>
<p>Для записи результатов выполнения задачи в лог-файл, вы можете использовать перенаправление стандартного вывода и стандартной ошибки в файл прямо внутри команды cron. Вот пример:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">* * * * * /путь/к/вашему/скрипту.sh &gt;&gt; /путь/к/лог-файлу.log 2&gt;&amp;1</pre>
<p>Здесь <strong>&gt;&gt;</strong> используется для добавления вывода в конец файла, <strong>2&gt;&amp;1</strong> перенаправляет стандартные ошибки в стандартный вывод, чтобы они также попадали в лог-файл.</p>
<h5>Указание времени выполнения задач</h5>
<p>В планировщике задач cron в Linux время выполнения задач задается в виде пяти полей, каждый из которых представляет собой определенный аспект времени. Эти поля определяют минуты, часы, дни месяца, месяцы и дни недели. Вот структура этих полей:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">* * * * *
- - - - -
| | | | |
| | | | +----- День недели (0 - воскресенье, 1 - понедельник, ..., 6 - суббота)
| | | +------- Месяц (1 - январь, 2 - февраль, ..., 12 - декабрь)
| | +--------- День месяца (1 - 31)
| +----------- Час (0 - 23)
+------------- Минуты (0 - 59)</pre>
<p>Каждое поле может принимать определенные значения или диапазоны значений, а также знаки &#8220;*&#8221; (звездочка) и &#8220;/&#8221; (косая черта).</p>
<ul>
<li><code>*</code>: Означает &#8220;каждый&#8221;. Например, если в поле минут стоит &#8220;*&#8221;, это означает, что задача будет выполняться каждую минуту.</li>
<li><code>число</code>: Определенное значение. Например, если в поле часов стоит &#8220;3&#8221;, задача будет выполняться в 3 часа.</li>
<li><code>число-число</code>: Диапазон значений. Например, &#8220;1-5&#8221; в поле дней недели означает с понедельника по пятницу.</li>
<li><code>*/число</code>: Каждый определенный интервал. Например, &#8220;*/15&#8221; в поле минут означает каждые 15 минут.</li>
</ul>
<h6>Примеры:</h6>
<p>Запуск задачи каждый день в 3 часа утра:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">0 3 * * *</pre>
<p>Запуск задачи каждый понедельник и среду в 12:30:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">30 12 * * 1,3</pre>
<p>Запуск задачи каждый час:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">0 * * * *</pre>
<p>Запуск задачи каждый день в 5 утра и 8 вечера:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">0 5,20 * * *</pre>
<p>Таким образом, правильное указание времени выполнения задачи в cron позволяет вам гибко управлять ее расписанием, с учетом требований вашего проекта или системы.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/rukovodstvo-po-rabote-s-planirovshhikom-zadach-cron/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как найти большие папки и файлы в Linux</title>
		<link>https://remadmin.com/blog/linux/kak-najti-bolshie-papki-i-fajly-v-linux/</link>
					<comments>https://remadmin.com/blog/linux/kak-najti-bolshie-papki-i-fajly-v-linux/#respond</comments>
		
		<dc:creator><![CDATA[REMADMIN]]></dc:creator>
		<pubDate>Sun, 25 Feb 2024 10:44:11 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[шпаргалка]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7294</guid>

					<description><![CDATA[Для поиска больших файлов и папок в Linux с последующей сортировкой результатов, можно использовать комбинацию команд find, du, и sort. Вот несколько примеров: Поиск больших файлов с сортировкой по убыванию, с выводом в терминал только 20 больших файлов,  в указанной папке find /путь/к/каталогу -type f -size +100M -exec du -h {} + &#124; sort -rh [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Для поиска больших файлов и папок в Linux с последующей сортировкой результатов, можно использовать комбинацию команд find, du, и sort. <span id="more-7294"></span>Вот несколько примеров:</p>
<h6>Поиск больших файлов с сортировкой по убыванию, с выводом в терминал только 20 больших файлов,  в указанной папке</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">find /путь/к/каталогу -type f -size +100M -exec du -h {} + | sort -rh | head -n 20</pre>
<p>Эта команда ищет файлы размером более 100 мегабайт в указанном каталоге и его подкаталогах, затем сортирует результаты по размеру в убывающем порядке.</p>
<h6>Поиск больших файлов с сортировкой по убыванию в текущей папке</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">find . -type f -size +500M -exec du -h {} + | sort -rh</pre>
<p>Эта команда ищет файлы размером более 500 мегабайт в текущем каталоге и его подкаталогах, затем сортирует результаты по размеру в убывающем порядке.</p>
<h6>Поиск больших папок с сортировкой по убыванию и выводом в терминал только 20 самых больших папок</h6>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">du -h --max-depth=1 /путь/к/каталогу | sort -rh | head -n 20</pre>
<p>Эта команда выводит размер каждой папки в указанном каталоге (включая подкаталоги) и сортирует результаты по размеру в убывающем порядке.</p>
<p><strong>Поиск папок, содержащих большое количество файлов, с сортировкой по убыванию, и выводом только 20 таких папок</strong></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">find /путь/к/каталогу -type d -exec sh -c 'echo -n "{} " &amp;&amp; find "{}" -maxdepth 1 -type f | wc -l' \; | sort -k2 -nr | head -n 20</pre>
<p>Эта команда ищет все подкаталоги в указанном каталоге, выводит каждый подкаталог вместе с количеством файлов в нем, а затем сортирует результаты по количеству файлов в убывающем порядке.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/kak-najti-bolshie-papki-i-fajly-v-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SSH &#8211; проброс приватного ключа</title>
		<link>https://remadmin.com/blog/linux/ssh-probros-privatnogo-kljucha/</link>
					<comments>https://remadmin.com/blog/linux/ssh-probros-privatnogo-kljucha/#respond</comments>
		
		<dc:creator><![CDATA[REMADMIN]]></dc:creator>
		<pubDate>Sat, 24 Feb 2024 07:56:04 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[шпаргалка]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7283</guid>

					<description><![CDATA[Проброс приватного ключа SSH позволяет, будучи подключённым к одному удалённому серверу, подключаться к другим, используя один и тот же приватный ключ, находящийся на вашем компьютере. Функция может быть очень полезна, если вы, например, работаете с GIT, прямо на удалённом сервере и вам нужно отправить с него же правки в GitHub. Для проброса приватного ключа используется [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Проброс приватного ключа SSH позволяет, будучи подключённым к одному удалённому серверу, подключаться к другим, используя один и тот же приватный ключ, находящийся на вашем компьютере. Функция может быть очень полезна, если вы, например, работаете с GIT, прямо на удалённом сервере и вам нужно отправить с него же правки в GitHub.</p>
<p>Для проброса приватного ключа используется <strong>SSH Агент. </strong>Способ одинаково работает в консоли любых операционных систем Linux, macOS и Windows.</p>
<p>Первым делом проверяем, запущен ли агент, и знает ли он что-то о вашем ключе:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">ssh-add -l</pre>
<p>Если получаем ответ: <strong>Could not open a connection to your authentication agent, </strong>запускаем агент командой:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">eval 'ssh-agent'</pre>
<p>Если ответ: <strong>The agent has no identities, </strong>значит нужно сообщить ему о вашем приватном ключе, выполнив команду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">ssh-add</pre>
<p>Если в ответе команды <strong>ssh-add -l </strong>вы видите путь к своему приватному ключу, значит всё хорошо, и вы можете подключаться к удалённому серверу по ssh, добавив при подключении опцию <strong>-A</strong>, то есть вот так:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">ssh -A user@host:port</pre>
<p>Или можно установить опцию ForwardAgent yes в файле <strong>~/.ssh/config</strong> на вашем локальном компьютере:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="raw">Host *
  ForwardAgent yes</pre>
<p>Для проверки, что всё хорошо и ключ проброшен, на удалённом сервере можно выполнить команду:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">echo "$SSH_AUTH_SOCK"</pre>
<p>Если всё ок, то она должна вернуть что-то похожее на:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="powershell">/tmp/ssh-DCIux21917/agent.21917</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/linux/ssh-probros-privatnogo-kljucha/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Критическая уязвимость в Elementor Pro &#8211; популярном плагине WordPress</title>
		<link>https://remadmin.com/blog/vebmasteru/kriticheskaya-uyazvimost-v-elementor-pro/</link>
					<comments>https://remadmin.com/blog/vebmasteru/kriticheskaya-uyazvimost-v-elementor-pro/#respond</comments>
		
		<dc:creator><![CDATA[REMADMIN]]></dc:creator>
		<pubDate>Mon, 03 Apr 2023 11:27:28 +0000</pubDate>
				<category><![CDATA[Вебмастеру]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Уязвимость]]></category>
		<guid isPermaLink="false">https://remadmin.com/?p=7263</guid>

					<description><![CDATA[В версии, 3.11.7, плагина Elementor Pro выпущенной  22 марта 2023 года, устранена серьезная уязвимость, которая при использовании плагина WooCommerce на сайте, дает возможность авторизованному пользователю (например, подписчику или клиенту) изменять любые параметры WordPress через AJAX-действие плагина Elementor Pro. Уязвимость в Elementor Pro находилась в версиях 3.11.6 и ниже,  где отсутствовал необходимый контроль привилегий. Это дает [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>В версии, 3.11.7, плагина Elementor Pro выпущенной  22 марта 2023 года, устранена серьезная уязвимость, которая при использовании плагина WooCommerce на сайте, дает возможность авторизованному пользователю (например, подписчику или клиенту) изменять любые параметры WordPress через AJAX-действие плагина Elementor Pro. Уязвимость в Elementor Pro находилась в версиях 3.11.6 и ниже,  где отсутствовал необходимый контроль привилегий.</p>
<p>Это дает возможность злоумышленнику включить страницу регистрации (если она была отключена) и установить роль пользователя по умолчанию в качестве администратора, чтобы создать учетную запись с административными привилегиями. Таким образом  злоумышленник получает полный контроль над сайтом, может его редактировать, а так же загружать на сервер абсолютно любые файлы.</p>
<h5>Что это за плагин?.</h5>
<p><a href="https://elementor.com/products/page-builder-plugin/" rel="nofollow noopener" target="_blank">Elementor Pro</a> &#8211; это популярный плагин для WordPress, который позволяет создавать профессионально выглядящие страницы и посты на сайте под управлением WordPress без необходимости знания кодирования.</p>
<p>Он предоставляет мощный визуальный редактор, который позволяет вам создавать страницы методом drag-and-drop (перетаскивания элементов), выбирать из более чем 80 встроенных виджетов (включая текстовые блоки, кнопки, формы и графики), а также импортировать готовые шаблоны, которые могут быть адаптированы под ваши нужды.</p>
<p>Elementor Pro также предлагает множество дополнительных функций, таких как создание анимации и интерактивных элементов, интеграция с популярными службами отправки электронной почты и CRM-системами, поддержка полноэкранного просмотра и возможность создавать темы и шаблоны для вашего сайта.</p>
<p>Он предлагает функции, такие как создание областей контента и шаблонов, глобальные виджеты и управление стилями, позволяющие повторно использовать элементы на других страницах вашего сайта.</p>
<p>Elementor Pro предлагает множество функций для создания привлекательного и профессионального контента, что делает его одним из наиболее популярных плагинов для WordPress.</p>
<h5>Эксплуатация уязвимости Elementor Pro</h5>
<p>В настоящий момент наблюдаются массовые взломы сайтов на WordPress, использующих одновременно плагины WooCommerce и Elementor Pro версии ниже 3.11.7.</p>
<p>После взлома на сервере можно обнаружить новые файлы <strong>wp-resortpark.zip, wp-rate.php или lll.zip,</strong> однако естественно, могут быть файлы и с другими именами.</p>
<p>Взломанные сайты в данный момент используются для перенаправления посетителей на другие вредоносные сайты, но также могут использоваться и для других целей (атака на другие сайты, рассылка спама, фишинг и т.д).</p>
<p>Плагин используется на 12 миллионах сайтов, из-за чего компания NinTechNet, сообщившая об уязвимости, присвоила рейтинг серьезности уязвимости 8,8 из 10.</p>
<h5>Как защитить свой сайт на WordPress</h5>
<p>Необходимо обновить плагин Elementor Pro до версии не ниже 3.11.7 (на момент написания этой статьи, <a href="https://elementor.com/pro/changelog/" rel="nofollow noopener" target="_blank">актуальная версия 3.12.1</a>). Хочу заметить, что плагин является платным.</p>
<p>Если сайт уже взломан, необходимо найти и удалить на сервере все загруженные злоумышленником файлы, а так же удалить созданных им пользователей.</p>
<p><span style="color: #ff0000;">Если вам необходима помощь в устранении последствий взлома на вашем сайте, под управлением WordPress, с удалением всего вредоносного кода, вы можете обратиться ко мне, по любым, удобным для вас</span> <a href="https://remadmin.com/contact/" target="_blank" rel="noopener">контактам</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://remadmin.com/blog/vebmasteru/kriticheskaya-uyazvimost-v-elementor-pro/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>