• Какой выбрать способ подключения сетевого диска на Hetzner?

    толко CIFS - это сетевая папка и работает она нормально, все остальное хрень собачья.
    не взвесить нихрена нормально, ни скорости, ни стабильности, мало того почти это единственная причина почему я везде подключаю эти стореджи, только они нормально дают доступ по этому протоколу
    Так же бэкап я монтирую через fstab как локальный диск в RO режиме
    и все кошерно.
    Мало того даже на винде можно их подключить без стороннего по, как обычный сетевой диск
    так что даже когда нужно достать бэкап ты просто заходишь в mc в папочку архивы и все.
    Могу даже скрипт для бэкапа скинуть
    Ответ написан
    1 комментарий
  • Доступ на htAcess как сделать доступ к файлу xml на файл со скриптом php?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^en/sitemap\.xml$ en/sitemap\.php [L]
    Ответ написан
    Комментировать
  • Трудности с редиректом *.site.com и 443. Как исправить?

    господи а просто прописать хост не судьба ?
    return 301 https://$host$request_uri;
    вот зачем вы выдумываете велосипед
    3 конфига по человечески для каждого домена отдельный красиво удобно модно молодежно
    Нет нужно придумывать велосипед, и потом героически его решать.
    Короче делай так
    proxy_pass https://127.0.0.1:4443;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header HTTPS YES;

    И главное в 99% манах в интернете есть ошибка и вы как идиоты ее делаете, потом получаете
    проблемы с reffery
    http ->http
    https -> https
    без всяких костылей в виде 443->80
    Ответ написан
    Комментировать
  • Как правильно установить основной сайт на BitrixVM?

    В ext_www и только сюда
    если это не б24 - его лучше в дефолт
    Причина есть, но дам тебе сразу результат
    Ответ написан
    2 комментария
  • Перебор и изменение файлов bash скриптом?

    shambler81
    @shambler81 Куратор тега Linux
    find . -regex ".*\.\ini" -exec sed -i 's/было/стало/g' "{}" \;
    Ответ написан
    5 комментариев
  • Сайт в локальном домене и Apache/NGINX?

    господи ну на винде то можно и openserver поставить, смысл вот таких издевательств
    Ответ написан
  • Бесплатный DNS хостинг с возможность использования своего домена, существуют ли такие?

    1 яндекс коннект там днс сервер бесплатный.
    2. https://www.cloudflare.com/
    в общем их достатоно много .
    Ответ написан
    Комментировать
  • Как сделать редирект раздела с одного сайта на другой?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^test/(.+)$ /test3/$1 [R=301,L]
    Где .+ любое количество символов от 1 и больше
    А () группа ( простоая групировка)
    ну и соответственно $1 это та же 1 группа которая была создана, таким образом все что в ней будет будет перекинуто
    Ответ написан
  • Spf=softfail как настроить?

    тебе нужно сделать инклуд яндекса к своейму айпи
    v=spf1 ip4:95.216.243.254 ip4:95.216.243.198 include:_spf.yandex.net ~all
    Ответ написан
  • Как http://example.com/news.php перевести в http://example.com/?page=news?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^example\.com/(.+)\.php$ /\?page=$1 [L,R=301]
    Ответ написан
    Комментировать
  • Как разобрать массив?

    shambler81
    @shambler81 Куратор тега Linux
    ну смотри тут несколко вариантов
    тут уже разбирали сравнине массивов.
    Как сравнить два массива в bash?
    Тут конечно нужны вводные данные, но опять же если это очень большое количество файлов то может быть ту мени аргументс и тд, в общем все равно не шибко быстрое решение.
    НО логика такая.
    1. создамем два массива.
    2. в отдельную переменную сохраняем только название файла из первого массива.
    3. создаем цикл перебераем этот файл, в массиве два, если соответствие находится то копируем его в полный путь к этому файлу.

    2 вариант более костыльный но тоже имеет место быть
    ты не используешь второй массив а просто каждый раз запускаешь 2 файнд уже с точным вхождением. find ./Serials -type f -iname "1110101.mkv"
    просо

    вот как-то так, да в таком варианте ты каждый раз будеш пускать по кругу файнд, но он с заданым конкрктным файлом и глубина невелкая, да и как я понял тебе не сильно нужна производительность.
    Но в таком варианте ты поймешь что нужно делать без привлечение создания методов и двух массивов.
    А главное нет ограничений на размер этих массивов.
    #!/bin/sh
    MASSIV_1=$(find /volume1/Geroev_Avenue_18/Downloads -maxdepth 1 -type f -iname "*.mkv") 
    
    
    for ELEMENT in $MASSIV_1_FILMAME
        do
    
    find ./Serials -type f -iname "$MASSIV_1_FILMAME -exec cp {} $MASSIV_1_DIR \;"
    
                   fi

    код на вскидку писал, дабы было понятно смысл.
    Ответ написан
  • Как исключить из .htaccess если запрос оканчивается на .ttf?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteCond %{REQUEST_URI} !^.+\.(ttf)(/|)$ [NC]
    Ответ написан
    Комментировать
  • Почему не видит папку или файл?

    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 и его переменные используются для бэкапа.
    Ответ написан
    Комментировать
  • Как изменить динамическую ссылку на файл?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^storage/.+/db/(.+)$ /storage/db/$1/? [L,R=301]
    Ответ написан
    Комментировать
  • Литература по Linux. Как лучше изучить Linux?

    shambler81
    @shambler81 Куратор тега Linux
    1. ставь linux mint самый простой вариант для изучения.
    2. оставляй ее как основную ос удали другие ( только так можно сделать полный переход)
    3. phpsotrm есть для линукс.
    4. линукс большой это то-же самое что " я хочу выучить программирование", собственно для программиста линукс должен быть примитивно легок. Так что тут немного конкретики не помешает.
    главное понять его философию.
    Какой именно дистрибутив без разницы поскольку выучив один ты сможешь с легкостью работать в любом другом.
    НО лучше всего брать обкатаные дистрибутивы не дичь ну и с адекватными обновлениями минт для этого подойдет.
    Если прям хочешь красношляпу то федору.

    Что по обучению
    1. в линуксе нет GUI все это баловство, весь нормальный софт консольный. Пока ты работаеш в гуи ты не учиш линукс.
    Вплоть до радио и плеера, уходи полностью в консоль. ( разработку всеже в шторме, но если прям по харду то vim)

    Выучи
    stdin stdout stderr
    как передавать потоки туда сюда, коды возврата.
    из консольных утилит нужно хорошо уметь раобтать с
    dir ls find sed awk grep xargs - чем лучше их знаешь и зная как работать с потоками этого для старта более чем достаточно остальное по манам в ходе работы.
    упрощеные условия типа |, || , && полезны в работе.
    а остальное это конструктор и "правильно собраного линукса не бывает это как правильный код, он только у одного человека в мире, это разраба, у всех остальных свое мнение по этому поводу и как правильно работать с линуксом нет общего понятия.
    Ну и теорию подучить нужно однозначно, тут никуда.
    Насколко я понимаю тебе нужно это для работы с веб серверами
    то тут идиально подойдет ispconfig3 ставь его, по дороге разберешся че куда идет.
    Далее патчь его до nginx+apache и ты считай уже в теме.
    Далее разбираешся с представлениями пхп
    Ну и версионностями последних.
    ;)
    Ответ написан
    Комментировать
  • Как организовать файлопомойку через ssh?

    shambler81
    @shambler81 Куратор тега Linux
    самый лучший вариант это расшарить самба шару через CIFS
    из плюсов это безшовность что на линукс что на виндовс это будут обычные шары
    мультиплатформенность базовые решения во всех ос, без костылей и магии
    а главное это единственный из протоколов заточеный на работу с большим количеством файлов.
    Короче это единственный протокол который неормально будет работать ( производительность при большом количестве файлов)
    все остальные даже взвешивать папку будут несколько часов.
    а если просто передать пару файлов то любой вплоть до ftp
    Ответ написан
    Комментировать
  • Как изменить url через httaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    RewriteRule ^product/(.+)/$ /catalog/$1/? [L,R=301]
    Ответ написан
    Комментировать
  • Как сделать массые редиректы в каталоге?

    shambler81
    @shambler81 Куратор тега htaccess
    не совсем понятно что из них было что стало.
    Дай пару ссылок прям как есть было стало
    С регулярками проблем нет там все можно вставить
    Ответ написан
    7 комментариев
  • Как исключить полный путь из tar?

    shambler81
    @shambler81 Куратор тега Linux
    Напишите что конкретно вы хотите сделатЬ, не саму проблему а именно действие. возможно уже есть готовые скрипты.
    вот атк делаются эксклуды.

    tar -cvpzf $TMPDIR/$DATEYM/$ELEMENT-$DATE.tar.gz --directory $SITEDIR/$ELEMENT/$WEB --ignore-failed-read --exclude='./bitrix/tmp' --exclude='./bitrix/updates' --exclude='./bitrix/backup/*\.gz*' --exclude='./bitrix/backup/*\.tar*' --exclude='./bitrix/cache' --exclude='./bitrix/managed_cache' --exclude='./bitrix/stack_cache' --exclude='./upload/resize_cache' --exclude='./stats' . >> /dev/nool 2> /var/log/backup_error.log
    Ответ написан
    Комментировать
  • Как обработать результат команду через grep?

    shambler81
    @shambler81 Куратор тега Linux
    sudo -V | head -n 1 |awk '{ print $3 }'

    вывод
    1.8.21p2


    Теперь проверяем версию
    if [ "$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.8.21p2" ]; then
    echo "все сработало"
    fi


    Усложняем я так понимаю вам нужно исключить определенные версии для этого нужно будет или несколько иф сделать или эльсиф

    if [["$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.8.21p2" ]]; then 
      echo "все сработало 1.8.21p2"
    
    elif [[ "$(sudo -V | head -n 1 |awk '{ print $3 }')" = "1.0" ]]; then 
     echo "все сработало 1.0"
    
    fi


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