Поиск

Найдено 42 статьи по слову "bash"

Бекапы через Duplicity

У меня уже был установлен, если нет, то:

apt install -y duplicity

Запускать его рекомендую под root. А также добавить в cron.

Делаем бекап без шифрования.

В первый раз будет полный бекап, при повторной
команде будет инкрементальный:

duplicity --no-encryption /home/crusat/www/crusat file:///mnt/backup/incremental/

Пример вывода:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1685457148.21 (Tue May 30 17:32:28 2023)
EndTime 1685457321.37 (Tue May 30 17:35:21 2023)
ElapsedTime 173.16 (2 minutes 53.16 seconds)
SourceFiles 2598
SourceFileSize 2430153960 (2.26 GB)
NewFiles 2598
NewFileSize 2430153960 (2.26 GB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2598
RawDeltaSize 2428822760 (2.26 GB)
TotalDestinationSizeChange 559464350 (534 MB)
Errors 0
-------------------------------------------------

После инкрементального пример вывода:

Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Tue May 30 17:32:28 2023
--------------[ Backup Statistics ]--------------
StartTime 1685458987.94 (Tue May 30 18:03:07 2023)
EndTime 1685458988.72 (Tue May 30 18:03:08 2023)
ElapsedTime 0.79 (0.79 seconds)
SourceFiles 2598
SourceFileSize 2430165025 (2.26 GB)
NewFiles 1
NewFileSize 4096 (4.00 KB)
DeletedFiles 0
ChangedFiles 5
ChangedFileSize 16991003 (16.2 MB)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 6
RawDeltaSize 72816 (71.1 KB)
TotalDestinationSizeChange 18152 (17.7 KB)
Errors 0
-------------------------------------------------

Делаем полный бекап:

duplicity --no-encryption --full /home/crusat/www/crusat file:///mnt/backup/full/

При необходимости, можно исключить файлы с помощью опции --exclude.

Восстанавливаем бекап:

duplicity --no-encryption restore file:///mnt/backup/incremental/ /home/crusat/www/crusat

Восстанавливаем бекап трехдневной давности:

duplicity -t 3D --no-encryption restore file:///mnt/backup/incremental/ /home/crusat/www/crusat

Восстанавливаем конкретный файл:

duplicity --no-encryption --file-to-restore FILENAME file:///mnt/backup/incremental/ /home/crusat/www/crusat

Все работает через scp, поэтому можно делать так:

duplicity --no-encryption /home/crusat/www/crusat scp:///user@backup.ru/incremental/

Добавляем в cron для ежедневных бекапов:

crontab -e
# добавляем через любимый редактор задачу на час ночи ежедневно
0 1 * * * duplicity --no-encryption /home/crusat/www/crusat file:///mnt/backup/incremental/

Всем спасибо за внимание.

bash copypaste devops

Простое нагрузочное тестирование на Siege

Siege - простой инструмент для нагрузочного тестирования (с одного сервера). С помощью него можно увидеть среднее время ответа и уже на этапе разработки, на своей машине, проверить, не слишком ли долго отвечают какие-то ендпоинты.

Пример запроса:

siege  -d1 -r5 -c10 'https://crusat.ru'

где:

-r5 - количество запросов. В данном случае 5 запросов от каждого пользователя.
-c10 - количество одновременных пользователей. В данном случае 10 пользователей.
-d1 - задержка между запросами. Измеряется в секундах. В данном случае 1 секунда.

То есть, суммарно будет 5 * 10 = 50 запросов. Время исполнения будет не более 5 * 1 = 5 секунд (при скорости обработки запроса в 0 секунд).

Пример вывода:

Transactions:                510 hits
Availability:             100.00 %
Elapsed time:              12.75 secs
Data transferred:           5.80 MB
Response time:              0.18 secs
Transaction rate:          40.00 trans/sec
Throughput:             0.46 MB/sec
Concurrency:                7.14
Successful transactions:         510
Failed transactions:               0
Longest transaction:            1.06
Shortest transaction:           0.05
bash devops

Советы начинающим владельцам Mac

Раскладка клавиатуры

Вы можете поменять раскладку клавиатуры на привычную, для этого выберите в настройках: Клавиатура -> Источники ввода -> Русская ПК (вместо просто Русская)

/media/uploads/2022/06/13/klaviatura_rus_pk.mp4

Оболочка по умолчанию

Мне больше нравится bash, но по умолчанию теперь zsh. Чтобы сменить обратно на bash, просто выполните в терминале команду:

chsh -s /bin/bash

Софт

Менеджер пакетов

Первым делом рекомендую поставить brew - с ним установка программного обеспечения становится гораздо проще.

Офис

Не торопитесь ставить офисный пакет Microsoft (Word, Excel), попробуйте Pages и Numbers от Apple. Они бесплатны и хорошо понимают форматы docx, xlsx.

Терминал

Вместо стандартного терминала рекомендую использовать iTerm2 https://iterm2.com, он гораздо удобнее.

Архиватор

Я использую Keka. Платный, но понимает все необходимые форматы, работает шустро и со своей задачей справляется на ура.

macos

grep со строками до и после найденной

Все просто, используйте параметры -A<число> и -B<число>, например:

grep -A5 -B5 searchstring
bash

Простой пример Apache Camel на M1

brew install maven
git clone https://github.com/camelinaction/camelinaction2.git
cd camelinaction2/chapter1/file-copy
mvn compile exec:java

По итогу, файл будет скопирован из data/inbox/ в data/outbox/

Код, отвечающий за это:

    public static void main(String args[]) throws Exception {
        // create CamelContext
        CamelContext context = new DefaultCamelContext();

        // add our route to the CamelContext
        context.addRoutes(new RouteBuilder() {
            public void configure() {
                from("file:data/inbox?noop=true").to("file:data/outbox");
            }
        });

        // start the route and let it do its work
        context.start();
        Thread.sleep(10000);

        // stop the CamelContext
        context.stop();
    }

Пример взят отсюда: https://habr.com/ru/company/redhatrussia/blog/352188/

apache camel java maven

Установка зависимостей Pipenv в Mac M1

Создаем файл для прокидывания своих переменных окружения:

sudo vim /usr/local/bin/pipenv_m1

Со следующим содержимым (у вас может отличаться путь openssl и python):

#!/bin/bash
CFLAGS="-I /opt/homebrew/opt/openssl/include" LDFLAGS="-L /opt/homebrew/opt/openssl/lib" GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 /Library/Frameworks/Python.framework/Versions/3.9/bin/pipenv $@

Даем право на запуск:

sudo chmod +x /usr/local/bin/pipenv_m1

Потом настраиваем в PyCharm, идем в Preferences -> Tools -> Python Integrated Tools (или просто ищем в настройках по слову pipenv) и в разделе Pipenv ставим следующий путь:

/usr/local/bin/pipenv_m1

Нажимаем ОК и пробуем установить из PyCharm виртуальное окружение через Pipenv. Все должно работать.

macos python

Если поломался pip на macOS

Например, ругается на zlib, хотя он установлен:

      File "/usr/local/Cellar/python@3.7/3.7.9_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/distutils/command/build_ext.py", line 340, in run
        self.build_extensions()
      File "/private/var/folders/3r/04yr8dd57896ccmx1f86ptnr0000gn/T/pip-install-lmm5ssql/Pillow/setup.py", line 694, in build_extensions
        raise RequiredDependencyException(f)
    __main__.RequiredDependencyException: zlib

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3r/04yr8dd57896ccmx1f86ptnr0000gn/T/pip-install-lmm5ssql/Pillow/setup.py", line 918, in <module>
        raise RequiredDependencyException(msg)
    __main__.RequiredDependencyException:

    The headers or library files could not be found for zlib,
    a required dependency when compiling Pillow from source.

    Please see the install instructions at:
       https://pillow.readthedocs.io/en/latest/installation.html

То можно сделать следующее:

python3 -m pip install --user --force-reinstall pip

После этого у меня все установилось. Если не поможет - то можно понизить версию python через brew и не забывайте про brew doctor.

python

Меняем шелл с zsh обратно на bash в macos

Все просто, достаточно этой команды:

chsh -s /bin/bash
bash

HTTPS на localhost

Когда на локалхосте нужен https можно сделать следующее.

Выполняем команду:

openssl req -x509 -out localhost.crt -keyout localhost.key \
  -newkey rsa:2048 -nodes -sha256 \
  -subj '/CN=localhost' -extensions EXT -config <( \
   printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

Копируем файлы localhost.crt и localhost.key в папку приложения и подключаем.

Также, не забывайте, что может потребоваться добавить сертификат в кейчеин (на маке просто делаем двойной клик по localhost.crt).

Также, может потребоваться перейти по ссылке на сертификат (если допустим подключается апи к другому хосту), то просто открывайте сайт по тому урлу и соглашайтесь через “Дополнительно” и “Перейти на сайт”.

Например, для nodejs код будет выглядеть примерно так (index.js):

const https = require('https');

const HTTPS_OPTIONS = Object.freeze({
    cert: fs.readFileSync('./localhost.crt'),
    key: fs.readFileSync('./localhost.key')
});

const httpsServer = https.createServer(HTTPS_OPTIONS);

Источник: https://letsencrypt.org/ru/docs/certificates-for-localhost/

devops

Ошибка при сборке билда игры на Unity под iOS

Пример ошибки

/Users/user/Library/Developer/Xcode/DerivedData/Unity-iPhone-dpiwnljjsxiubxbjbdnsqncxpxfn/Build/Intermediates.noindex/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/Script-033966F41B18B03000ECD701.sh: line 2: /Users/user/Game_iOS_1.9_XCODE/MapFileParser.sh: Permission denied
Command PhaseScriptExecution failed with a nonzero exit code

Решение:

<span>1.</span> Выставить права запуска на файл /Users/user/Game_iOS_1.9_XCODE/MapFileParser.sh:

chmod +x /Users/user/Game_iOS_1.9_XCODE/MapFileParser.sh

<span>2.</span> Заменить #!/bin/sh на #!/bin/bash в этом файле (первая строка в любом редакторе)

<span>3.</span> После этого сделать Clean и можно повторно собрать приложение - все должно быть ок.

bash unity