Bash Days | Linux | DevOps
23.6K subscribers
227 photos
27 videos
782 links
Авторский блог от действующего девопса

Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

MAX: https://max.ru/bashdays

Курс: @tormozilla_bot
Блог: https://bashdays.ru
Download Telegram
Архивирование и хранение. Часть 3/4.

Всем привет, с вами TagdTagd.

Первая часть тут: https://t.me/bashdays/1561
Вторая часть тут: https://t.me/bashdays/1574


На мой взгляд лучшим аналогом winrar на Linux является 7zip. И жмет качественно и быстро и удобный GUI для пользователей. И мультиплатформенный. Есть, правда, и недостатки:

1. Не сохраняет права (решается предварительным созданием tar)

2. Ну, напрочь отсутствуют средства восстановления. Если вдруг архив разбился — восстановить из него что-то получится едва ли.

Но это как раз проистекает из философии nix. Каждая программа должна выполнять одну функцию, но делать это хорошо. 7zip жмет очень качественно. А остальное исправим.

Итак, многие знают, что если к 7z архиву приписать другой файл «в хвост», то архив не перестанет быть архивом. Просто при тестировании и распаковке появится замечание: «WARNINGS: There are data after the end of archive».

Вот этим и воспользуемся. Берем архив, создаем par2 файл, и с помощью (cat file.7z file.par2 > file.7zpar2) сливаем в новый формат.

Достоинства этого метода:

1. Архив полностью сохраняет функциональность. Его можно прям без разделения взять и разархивировать.

2. Он содержит информацию для восстановления, которой можно воспользоваться.

К небольшим недостаткам данного метода можно отнести:

1. par2 запоминает имена файлов в момент создания par2-файла. То есть если par2 был создан для file.7z, а потом вы его объединили и переименовали в file77.7zpar2, то восстановится файл file.7z. Но мне кажется это не существенно, по сравнению с потерей данных.

2. Для восстановления потребуется объем места, (size file.7zpar2)*2

3. Максимальный размер защищаемого файла <900Гб при RECV_PROMILE=1 (ограничения 2 Гб на par2 файл)

Собственно скрипт:

#!/bin/bash

# (c) Tagd v.2026-09-08
# merge restore information (par2) to end of file
# if no output file, recovery record added in place
# and file will be renamed
# usage: create_par2.sh /path/inputfile.7z [/path/outputfile.7zpar2]
#

declare -i RECV_PROMILE=10 # size recovery info (must <2Gb) from input file
declare -i BLOCK_COUNT=2000 # 2 - 32764
declare -i RECV_BCOUNT=$((BLOCK_COUNT*RECV_PROMILE/1000))
declare -i RESULT=2 I=0

declare -x PATH="/usr/local/bin:/usr/bin:/bin"
(($#))|| { head -7 "$0";exit; } #help

declare INFILE_NAME="$1"
declare OUTFILE_NAME="${1}par2"
declare PARFILE_NAME="$INFILE_NAME.par2"
declare START_BLOCK="00000"
(($#==2)) && OUTFILE_NAME="$2"

[[ -f "$INFILE_NAME" ]] || { echo no file $INFILE_NAME >&2; exit 3; } #file not found
[[ -f "$OUTFILE_NAME" ]] && rm "$OUTFILE_NAME"

((BLOCK_COUNT<2)) && BLOCK_COUNT=2
((BLOCK_COUNT>32764)) && BLOCK_COUNT=32764
((RECV_BCOUNT<2)) && RECV_BCOUNT=2
((RECV_BCOUNT>32764)) && RECV_BCOUNT=32764

START_BLOCK=${START_BLOCK::${#RECV_BCOUNT}}

rm "$INFILE_NAME"*.par2 2>/dev/null
par2 create -qq -n1 -b${BLOCK_COUNT} -c${RECV_BCOUNT} "$PARFILE_NAME" "$INFILE_NAME" && ((--RESULT))

# -b<n> Set the Block‐Count
# -c<n> Recovery block count (don't use both -r and -c)
# -n<n> Number of recovery files (don't use both -n and -l)
# -qq silent mode

RECV_VOL="$INFILE_NAME.vol${START_BLOCK}+${RECV_BCOUNT}.par2"
if (($#==2));then #merge
cat "$INFILE_NAME" "$RECV_VOL" >"$OUTFILE_NAME" && ((--RESULT))
else #merge in place
cat "$RECV_VOL" >>"$INFILE_NAME" &&
mv "$INFILE_NAME" "$OUTFILE_NAME" && ((--RESULT))
fi
rm "$INFILE_NAME"*.par2 2>/dev/null
exit $RESULT


chmod +x ./create_par2.sh

man 7z
man par2


🛠 #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
20
До Импульса Т1 — одна неделя ⚡️
 
19 ноября в Москве состоится ИТ-конференция Импульс Т1. Если вы еще не зарегистрировались, сейчас самое время это сделать.
 
В программе — 5 направлений, 70+ практических активностей и более 2 000 активных участников ИТ-сообщества.
 
В этом году можно будет отрабатывать знания на практике сразу после докладов:
 
🔘на код-ретрите — практиковаться в парном программировании и TDD
🔘в ресурсных играх — решать командные задачи в условиях ограничений
🔘в зоне Арх каты — искать слабые места в архитектурных решениях
🔘на стенде доступности — изучать цифровые сервисы с точки зрения пользователей с ОВЗ
 
Приходите, чтобы отточить ИТ-мастерство, получить прикладные инструменты, обсудить рабочие задачи с коллегами и обменяться опытом с ведущими инженерами отрасли.

📆 19 ноября 2026 года

📍Москва, ул. Волочаевская, д. 48, стр. 1, ДК завода «Серп и молот» (LOFT#8)
 
До встречи — одна неделя. Успейте зарегистрироваться.
О рекламодателе
Please open Telegram to view this post
VIEW IN TELEGRAM
Раздел удалён, логический диск пропал, структура LVM повреждена. С чего начать восстановление и как не усугубить ситуацию первыми действиями? В такой момент важно понимать, какие метаданные пострадали и как устроено хранение данных.

19 ноября в 20:00 на открытом уроке курса «Инфраструктура высоконагруженных систем» разберёте восстановление MBR, GPT и LVM после критических сбоев.

Рассмотрите, как операционная система видит разделы и что происходит при их удалении. Сравните устройство MBR и GPT, разберёте принципы организации физических томов, групп томов и логических томов LVM.

Практическая часть посвящена аварийным ситуациям — случайному удалению разделов и повреждению структур LVM. Познакомитесь с консольными утилитами gdisk и vgcfgrestore и их применением для восстановления структуры разделов и LVM.

Отдельно разберёте признаки повреждения и порядок первоочередных действий при потере логических дисков. Это поможет осмысленно подходить к восстановлению и понимать, какие действия могут осложнить дальнейшую работу с данными.

Урок будет полезен системным администраторам, DevOps- и SRE-инженерам, которые работают с физическими серверами и виртуальной инфраструктурой.

Урок проведёт Андрей Буранов.

Зарегистрироваться: https://two.su/1xao6

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
4
мде, зашел тут на досуге в графану посмотреть, вот так вот и живем

🛠 #рабочиебудни
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
46