Ответы пользователя по тегу Командная строка
  • Какая утилита подобна wget, но умеет делать upload дерева файлов по https?

    shambler81
    @shambler81 Куратор тега Linux
    Неправильно мыслишь.
    1. если большое дерево то это будет очень, очень очень долго.
    2. Кто мешает тебе совместить все это собрав в потоке архив и распаковать его на той стороне.
    И так делаем в 1 потоке:
    Архивируем | копируем | распраковываем > ложим. и да в примере архива не будет ни на той стороне ни на той, он будет только в канале
    tar cvfz - --directory /var/www/3dpaneli.ru/web . |ssh root@89.207.93.148cd /tmp/test/aa;tar xvfz -"

    Все плюсы как пофайлового копирования так и плюсы 1 поточного копирования присутствуют
    4. Кто мешает тебе работаь через вебдав он https
    5. csync rsync и тд
    Ответ написан
    Комментировать
  • Как переименовать несколько файлов через командную строку?

    find . -name 'php.ini' -exec mv 'php.ini 'php.ini_old  "{}" \;

    find найти от папки и глубже
    . - от текущей
    -name имя файла
    -exec выполниь с этим файлом
    mv - копировать
    {} - подставить путь который найден файнд
    ;\ - забей просто запкрыавет
    Ответ написан
    Комментировать
  • В терминале putty нет кнопки подключения,как исправить?

    shambler81
    @shambler81 Куратор тега Linux
    можешь сделать так
    62826d9e3d903799586513.jpeg
    Ответ написан
    Комментировать
  • Можно ли командой удалить все метаданные у файлов?

    да можно
    Вт так
    sudo apt-get install libimage-exiftool-perl
    find . -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"  -exec grep -rl base64 {} \; -exec exiftool -all= {} \; -exec rm '{}_original' \;

    соответствено вместо find . можно поставить путь до сайта find /var/www/site.ru ну или запустить команду внутри папки.
    и на сладкое
    Оптимизация картинок
    Ответ написан
    2 комментария
  • Где ошибка скрипта?

    shambler81
    @shambler81 Куратор тега Linux
    можно заменить часть кода на вот такой
    find /volume1/Geroev_Avenue_18/Downloads/ -type f -regex ".*\.\(mkv\|m4v\|ts\|avi\)"

    лаконичней и проще читается
    Ответ написан
    Комментировать
  • Как найти в каком файле нужная настройка?

    find  /etc/apache2 -type f -exec grep -l "тут нужный текст" {} \;

    find искать
    /etc/apache2 от какой папки
    -type f -только файлы
    -exec -с найденным путем выполнить команду
    grep - поиск по тексту
    - l принтуем вывод не того что нашли а файла в котором нашли
    "искомый текст"
    {}- полставить путь из find
    \;-закрываем и экранируем.

    на выходе нужный нам результат, будут отображаться пути к файлам в этой папке в которых упоминался наш текст.
    Ответ написан
  • Ошибка sed, почему?

    самое частое ты тупо указал /scrypt.sh
    но в cron по умолчанию нет $PATH
    нужно указать путь до интерпритатора
    /bin/bash scrypt.sh
    лучше покажи что у тебя в кроне
    Ответ написан
    Комментировать
  • Почему не видит папку или файл?

    shambler81
    @shambler81 Куратор тега Linux
    создание бэкапа
    60be967c5f0f0182040362.png
    Структура бэкапов ( тут примонтирован FTP сервер через cifs)
    60be97a6eedb8875107169.png
    работает так если запускаешь скрипт то бэкапит все сайты со всеми базами исключает все что нужно. ( каждый сайт отдельно бэкапит свою базу) ну и отдельно каждый сайт.
    если через пробел указываеш сайт то scrypt.sh vasya.ru бэкапится только он, так же сразу заливается на фти с ограничением
    скорости и прогресс баром.
    и подчисткой локальных бэкапов
    Так же после бэкапа тебе выкидвыается прямая ссылочка на фтп архив.
    доп софт wput и pv его нужно доставить !

    #!/bin/sh
    # Пример пути до сайта /var/www/site.ru/web/
    SITEDIR="/home/bitrix/ext_www"                      # Папка до названия доменаов
    DBCONN="bitrix/php_interface/dbconn.php"            # Откуда читать настройки mysql
    FTPUSER="backup_ftp"                                # Логин FTP сервера
    FTPPASS="adfadsfasdfa safdw"                        # Пароль FTP
    FTPHOST="111.1.11.11    "                           # сервер FTP
    FTPDIR=""                                           # папка на FTP
    TMPDIR="/mnt/backup/site"                           # тут временный файл лежит до отправки
    TMPWPUTBASE="/mnt/backup"                            # wput подставит эту папку как базовую
    DATE=`date +"%Y-%m-%d"`                             # Формат даты в имени файла
    DATEYM=`date +%Y`/`date +%m`                        # Второй форматы даты
    LIST=${1:-`ls $SITEDIR | grep -E ".*\.\w{1,5}" | grep -v "restore.php" | grep -v "klondike.php"`} # Название сайта, тут выбор или аргумент или, регулярка  можно убрать только -L ;)
    
    mkdir -p $TMPDIR/$DATEYM # создаем  структ уру каталогов если их нет
    
    for ELEMENT in $LIST
        do
                    if [ ! -f /$SITEDIR/$ELEMENT/$DBCONN ];
                            then
                                echo " Файл $SITEDIR/$ELEMENT/$DBCONN не найден, сайт будет без БД!"
                            else
    # ищим какая база отностися к сайту сохраняем в переменные ее данные.
    DBLOGIN=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBLogin}\");")
    DBNAME=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBName}\");")
    DBPASS=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBPassword}\");")
    DBHOST=$(/bin/php -r "include '${SITEDIR}/${ELEMENT}/${DBCONN}'; echo(\"{\$DBHost}\");")
    echo "Найдена BD $ELEMENT"
    echo ""
    echo "Login: $DBLOGIN"
    echo "DB   : $DBNAME"
    echo "Pass : $DBPASS"
    echo "Host : $DBHOST"
    echo ""
    echo "Дамп БД $DBNAME"
    
    #  бэкап базы только через эвал и эхо смогли экранировать все варианты спецсимволов в пароле
    eval "$(echo "mysqldump --no-tablespaces -u$DBLOGIN -p'$DBPASS' $DBNAME -h$DBHOST > $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql  && echo "Дамп БД $DBNAME будет сохранен в корне сайта"  ||  echo "Ошибка дампа базы данных " $DBNAME")"
    chown bitrix:bitrix $SITEDIR/$ELEMENT/$DBNAME\-$DATE.sql
                   fi
    
    echo "Считаем количество Файлов  на сайте"
    
    SIZE="$(find $SITEDIR/$ELEMENT/$WEB -not -path "$SITEDIR/$ELEMENT/bitrix/tmp/*" -not -path "$SITEDIR/$ELEMENT/bitrix/updates/*" -not -path "$SITEDIR/$ELEMENT/dev_logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/logs/*" -not -path "$SITEDIR/$ELEMENT/upload/1c_import_light/total_errors/*" -not -path "$SITEDIR/$ELEMENT/.git/*" -not -path "$SITEDIR/$ELEMENT/bitrix/catalog_export/logs/*" -not -path "$SITEDIR/$ELEMENT/bitrix/backup/*" -not -path "$SITEDIR/$ELEMENT/bitrix/cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/managed_cache/*" -not -path "$SITEDIR/$ELEMENT/bitrix/stack_cache/*" -not -path "$SITEDIR/$ELEMENT/upload/resize_cache/*" -not -path "$SITEDIR/$ELEMENT/stats/*" | wc -l)" && echo " В архиве будет $SIZE файлов"
    
    echo "Архивируем сайт $ELEMENT прогресс не в килобайтах а в  количестве файлов"
    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates'  --exclude='./dev_logs' --exclude='./upload/1c_import_light/logs' --exclude='./upload/1c_import_light/total_errors' --exclude='./.git' --exclude='./bitrix/catalog_export/logs'  --exclude='./bitrix/backup'  --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . | pv -s $SIZE -l > /dev/null
    
            rm -f $SITEDIR/$ELEMENT/$WEB/$DBNAME\-$DATE.sql # поскльку ложим на реальный сайт, ибо нормально добавить в архив не получитяс.
    
            echo "Сохраняем $ELEMENT на FTP"
            wput  --basename=$TMPWPUTBASE --limit-rate=6000K --timestamping  --remove-source-files --tries=2 $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz ftp://$FTPUSER:$FTPPASS@$FTPHOST$FTPDIR && echo "Архив залит успешно, временные файлы удалены"
    
    echo -en "\n\033[37;1;41m Ссылочка:\033[0m \e[1;4;36mwget ftp://$FTPUSER:$FTPPASS@$FTPHOST/site/$DATEYM/$ELEMENT-$DATE.tar.gz\e[0m\n\n" #ks05
    
      done
    
    rm -r $TMPDIR

    В скрипте не задействовано ядро битрикс ВМ дабы можно было его адаптировать на любые другие сервера. Для определения базы данных выполняется dbconn и его переменные используются для бэкапа.
    Ответ написан
    Комментировать
  • Как сделать замену фразы в файле в разных папках?

    В начале дочитай до конца
    find  ./*/public_html/stolbiki-parkovochnye -type f -name 'index.php' -exec sed -i 's/\x24GLOBALS\[\x22SLIDER_TOP\x22\] = 17258\x3B/GLOBALS["PREIM_TOP"] = 3670;/g' {} \;


    ./*/public_html/stolbiki-parkovochnye - от какой папки
    -type f файл
    -name 'index.php'- только индекс пхп
    -exec- выполнить с найденым
    sed -i 's/было/стало/g' - заенить в потоке и перезаписать в файле все найденые соответсвия
    '\x24 и \x22 и \x3B это я писал тут
    {}- то чудо которое ты искал это тот аргумент что нашел файнд он подставляется ( часть exec)
    \;- закрываем экзэк
    результат
    cat index.php
    GLOBALS["PREIM_TOP"] = 3670;

    Если хочешь посмотреть на результат но не вносить изменения вместо sed -i поменяй на sed -e

    Поскольку сед опасен при неопытном использование было бы не кисло сделать бэкап этих файлов с сохранением структуры каталога.
    mkdir ./tmp/backup
    find./*/public_html/stolbiki-parkovochnye -type f -name 'index.php' -print0 | xargs -0 cp --parents --target-directory ./tmp/backup

    спасибо кэп, очень развернутый ответ я прям аж не ожидал -> "вопрос решен"
    Ответ написан
  • Linux ошибка скрипта. Почему?

    shambler81
    @shambler81 Куратор тега Linux
    $(curl ....)
    А еще лучше напиши что ты хотел сделатЬ, а как-то кривовато все это смотрится
    Ответ написан
  • Какой командный процессор (shell) самый продвинутый и удобный в Linux?

    shambler81
    @shambler81 Куратор тега Linux
    sh - посколкьу это хоть и самый неудобный но самый стандартный и если ты будешь работать на разных серверах то не везде есть отличное от sh и даже bash а главное не всегда можно ставить привычную тебе шел. по этому лучше учиться пользоваться тем что есть везде. А то может получиться что ты работаешь на упавшем продакшен сервере а тебе вместо работы приходится переучиваться к дефолтной шел.
    Ответ написан
  • Как изменить вывод grep?

    shambler81
    @shambler81 Куратор тега Linux
    find /etc/nginx  -type f  -exec grep -l 3dpaneli.ru {} \; | xargs ls -lah

    find - искать в каталоге
    -type f только имена файлов
    -execвыполнить команду с найденым файлом
    grep -l - не выводить сам греп а выводить имя файла в котором он нашел
    {} - то что на выводе у find
    \; - просто заканчиваем файнд
    |- вывод передаем следующей команде
    xargs ls -lah xargs почитай отдельно короче он передаст вывод пути файла на ls -lah и получаем все че хочеш
    5fd0f0daa8e29240627639.png

    если тебе нужно обрезать вообще все лишнее то тут уже можно awk в общем там уже будет проще удалить лишние колонки
    спасибо кэп, отметил как решенный.
    Ответ написан
    1 комментарий
  • Как скачать файл с сервера находясь на сервере?

    shambler81
    @shambler81 Куратор тега Linux
    самый простой способ для разовых передач просто на вашем mc подключиться к внешнему ssh
    и скопировать ручками.
    логин и пароль как ввести я думаю вы знаете.
    5f916e6e87713949213591.png
    Собственно подойдет любой из протоколов FTP SFTP SSH ( ну фтп должен присутствовать на той стороне)
    Ответ написан
    Комментировать
  • Как пофиксить проблемы с кириллицей в консоле BitrixVM?

    в битрикс вм нет проблемы с кодировкой, проблемы в кодировке вашей локальной консоли.
    5f3a404a0cfe2521591727.png
    Ответ написан
  • Как вывести изображение в командную строку? Или это невозможно?

    Если вам нужно прям консольное, то есть вообще без графики.
    https://evilinside.ru/kak-v-linux-prosmotret-jpg-i...
    но можно по ssh и передавать графику
    tolik-punkoff.com/2016/11/21/nastrojka-x11-forward...
    в таком случае любой графический просмотрщик.
    Ответ написан
    Комментировать
  • Как правильно сформировать запрос замены выражения?

    Вы это имели в виду?
    https://sed.js.org/?gist=c706a59d83d88852267bbe652...
    Если да, то вы не учли специфики экранирования спецсимволов в sed, я подробнее описывал это на вики.
    Если нет то дайте изначальную задачу.
    Ответ написан
    Комментировать
  • Как скачать wget'от ссылки из файла и сохранять не index.html, а site.ru?

    shambler81
    @shambler81 Куратор тега Linux
    wget $(cat ru.txt)
    а так ?
    Ответ написан
    Комментировать