Команды обновлений (update) 
Стандартные команды Битрикс для обновления системы: языковые пакеты, модули и версии.
update:languages 
Обновляет языковые файлы для указанных языков.
Синтаксис 
bash
php bitrix.php update:languages [опции]Опции 
--languages=<коды>или-l- список кодов языков через запятую
Примеры использования 
bash
# Обновление всех языковых файлов
php bitrix.php update:languages
# Обновление конкретных языков
php bitrix.php update:languages -l ru
php bitrix.php update:languages --languages=ru,en,de
# С подробным выводом
php bitrix.php update:languages -vupdate:modules 
Обновляет модули системы.
Синтаксис 
bash
php bitrix.php update:modules [опции]Опции 
--modules=<список>или-m- список модулей через запятую--import=<файл>или-i- JSON-файл с версиями модулей (экспертный режим)
Примеры использования 
bash
# Обновление всех модулей
php bitrix.php update:modules
# Обновление конкретных модулей
php bitrix.php update:modules -m main
php bitrix.php update:modules --modules=main,iblock,catalog
# Импорт версий модулей из JSON (экспертный режим)
php bitrix.php update:modules -i updates.json
php bitrix.php update:modules --import=updates.json
# С подробным выводом
php bitrix.php update:modules -vФормат JSON для импорта 
json
{
  "main": "23.0.0",
  "iblock": "21.0.0",
  "catalog": "23.5.0",
  "sale": "23.0.0"
}update:versions 
Понижает версии модулей в базе данных согласно файлу JSON (используется для отката).
Синтаксис 
bash
php bitrix.php update:versions <versions>Аргументы 
versions- путь к JSON-файлу с версиями модулей
Примеры использования 
bash
# Обновление версий из файла
php bitrix.php update:versions versions.json
# Откат к предыдущим версиям
php bitrix.php update:versions /backup/versions_before_update.jsonФормат JSON-файла 
json
{
  "main": "22.0.0",
  "iblock": "20.5.0",
  "catalog": "22.0.0"
}Использование 
Регулярное обновление системы 
bash
#!/bin/bash
# Еженедельное обновление системы
cd /var/www/bitrix
LOG_FILE="/var/log/bitrix-updates-$(date +%Y%m%d).log"
{
    echo "=== Начало обновления: $(date) ==="
    
    # Создать резервную копию
    echo "Создание резервной копии..."
    php bitrix.php backup:create --name="before_update_$(date +%Y%m%d)"
    
    # Обновить языковые файлы
    echo "Обновление языковых файлов..."
    php bitrix.php update:languages
    
    # Обновить модули
    echo "Обновление модулей..."
    php bitrix.php update:modules
    
    # Очистить кеш
    echo "Очистка кеша..."
    php bitrix.php cache:clear
    
    echo "=== Завершено: $(date) ==="
    
} >> "$LOG_FILE" 2>&1
# Отправить отчет
mail -s "Bitrix Update Report" admin@example.com < "$LOG_FILE"Безопасное обновление с проверками 
bash
#!/bin/bash
# Обновление с проверками и откатом при ошибках
cd /var/www/bitrix
# Сохранить текущие версии модулей
echo "Сохранение текущих версий..."
php -r '
$conn = Bitrix\Main\Application::getConnection();
$result = $conn->query("SELECT ID, VERSION FROM b_module");
$versions = [];
while ($row = $result->fetch()) {
    $versions[$row["ID"]] = $row["VERSION"];
}
file_put_contents("/tmp/versions_before.json", json_encode($versions, JSON_PRETTY_PRINT));
'
# Создать бэкап
php bitrix.php backup:create --name="before_update"
# Обновить модули
if php bitrix.php update:modules; then
    echo "✓ Модули обновлены успешно"
    
    # Проверить работоспособность
    if curl -s -o /dev/null -w "%{http_code}" http://localhost | grep -q "200"; then
        echo "✓ Сайт работает"
    else
        echo "✗ Сайт недоступен, откат изменений"
        php bitrix.php update:versions /tmp/versions_before.json
        php bitrix.php cache:clear
    fi
else
    echo "✗ Ошибка обновления модулей"
    exit 1
fiОбновление конкретных модулей 
bash
#!/bin/bash
# Обновление только критичных модулей
CRITICAL_MODULES=("main" "iblock" "catalog" "sale")
cd /var/www/bitrix
for module in "${CRITICAL_MODULES[@]}"; do
    echo "Обновление модуля: $module"
    
    if php bitrix.php update:modules --modules="$module"; then
        echo "✓ $module обновлен"
    else
        echo "✗ Ошибка обновления $module"
    fi
doneПродвинутые сценарии 
Staged обновления (поэтапные) 
bash
#!/bin/bash
# Поэтапное обновление с проверками между этапами
cd /var/www/bitrix
STAGES=(
    "main"
    "iblock,catalog"
    "sale,crm"
)
for stage in "${STAGES[@]}"; do
    echo "=== Этап: $stage ==="
    
    # Сохранить версии
    php -r "
    \$conn = Bitrix\Main\Application::getConnection();
    \$result = \$conn->query('SELECT ID, VERSION FROM b_module');
    \$versions = [];
    while (\$row = \$result->fetch()) {
        \$versions[\$row['ID']] = \$row['VERSION'];
    }
    file_put_contents('/tmp/versions_stage_$stage.json', json_encode(\$versions));
    "
    
    # Обновить
    if php bitrix.php update:modules --modules="$stage"; then
        echo "✓ Этап $stage завершен"
        
        # Проверить сайт
        sleep 5
        if ! curl -s http://localhost > /dev/null; then
            echo "✗ Сайт недоступен, откат этапа"
            php bitrix.php update:versions "/tmp/versions_stage_$stage.json"
            exit 1
        fi
    else
        echo "✗ Ошибка на этапе $stage"
        exit 1
    fi
    
    echo "Пауза 30 секунд перед следующим этапом..."
    sleep 30
done
echo "Все этапы завершены успешно"Синхронизация версий между окружениями 
bash
#!/bin/bash
# Экспорт версий с продакшена для dev/staging
ENV="${1:-production}"
cd /var/www/bitrix
# Экспортировать текущие версии
php -r '
$conn = Bitrix\Main\Application::getConnection();
$result = $conn->query("SELECT ID, VERSION FROM b_module");
$versions = [];
while ($row = $result->fetch()) {
    $versions[$row["ID"]] = $row["VERSION"];
}
file_put_contents("/tmp/versions_'$ENV'.json", json_encode($versions, JSON_PRETTY_PRINT));
'
echo "Версии модулей экспортированы: /tmp/versions_$ENV.json"
# Скопировать на другие окружения
if [ "$ENV" = "production" ]; then
    scp /tmp/versions_production.json staging:/tmp/
    scp /tmp/versions_production.json dev:/tmp/
fiАвтоматический откат при ошибках 
bash
#!/bin/bash
# Обновление с автоматическим откатом
cd /var/www/bitrix
SNAPSHOT_FILE="/var/backup/versions_snapshot_$(date +%Y%m%d_%H%M%S).json"
# Создать снимок текущих версий
php -r "
\$conn = Bitrix\Main\Application::getConnection();
\$result = \$conn->query('SELECT ID, VERSION FROM b_module');
\$versions = [];
while (\$row = \$result->fetch()) {
    \$versions[\$row['ID']] = \$row['VERSION'];
}
file_put_contents('$SNAPSHOT_FILE', json_encode(\$versions, JSON_PRETTY_PRINT));
"
# Функция отката
rollback() {
    echo "Выполнение отката..."
    php bitrix.php update:versions "$SNAPSHOT_FILE"
    php bitrix.php cache:clear
    echo "Откат завершен"
}
# Установить trap для отката при ошибке
trap rollback ERR
# Обновить модули
php bitrix.php update:modules -v
# Проверить работоспособность
if ! curl -s -f http://localhost > /dev/null; then
    echo "Сайт недоступен после обновления"
    exit 1
fi
echo "Обновление успешно завершено"Мониторинг обновлений 
Проверка доступных обновлений 
bash
#!/bin/bash
# Ежедневная проверка наличия обновлений
cd /var/www/bitrix
# Проверить обновления (требует доступа к update.bitrix.ru)
UPDATES_AVAILABLE=$(php -r "
require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include.php';
CModule::IncludeModule('main');
\$updates = CUpdateClient::GetUpdatesList();
echo count(\$updates);
")
if [ "$UPDATES_AVAILABLE" -gt 0 ]; then
    echo "Доступно обновлений: $UPDATES_AVAILABLE" | \
        mail -s "Bitrix Updates Available" admin@example.com
fiИстория обновлений 
bash
#!/bin/bash
# Ведение журнала обновлений
cd /var/www/bitrix
HISTORY_FILE="/var/log/bitrix-update-history.log"
# Получить текущие версии
php -r '
$conn = Bitrix\Main\Application::getConnection();
$result = $conn->query("SELECT ID, VERSION FROM b_module ORDER BY ID");
echo "=== ".date("Y-m-d H:i:s")." ===\n";
while ($row = $result->fetch()) {
    echo sprintf("%-30s %s\n", $row["ID"], $row["VERSION"]);
}
echo "\n";
' >> "$HISTORY_FILE"Troubleshooting 
Обновление не работает 
Проблема: Модули не обновляются
Решения:
- Проверьте подключение к update.bitrix.ru
 - Проверьте лицензионный ключ
 - Проверьте права доступа к файлам
 - Проверьте логи обновлений
 
Ошибка при откате 
Проблема: Не удается откатить версии
Решения:
- Проверьте формат JSON-файла
 - Убедитесь, что файл версий существует
 - Проверьте права доступа к базе данных
 - Восстановите из резервной копии
 
Конфликт зависимостей 
Проблема: Ошибка зависимостей при обновлении
Решения:
- Обновляйте модули в правильном порядке (сначала main)
 - Обновите все зависимые модули
 - Используйте опцию 
--modules=allдля обновления всех сразу 
Полезные советы 
💡 Создавайте бэкапы - всегда делайте резервную копию перед обновлением
💡 Тестируйте на staging - проверяйте обновления на тестовом окружении
💡 Сохраняйте версии - ведите журнал версий модулей
💡 Автоматизируйте откат - подготовьте скрипты для быстрого отката
💡 Мониторьте - отслеживайте доступные обновления регулярно
💡 Планируйте - обновляйте систему в периоды низкой нагрузки
Смотрите также 
- Команды модулей - установка и удаление модулей
 - Команды резервного копирования - создание бэкапов
 - Примеры cron - автоматизация обновлений
 - Официальная документация Битрикс по обновлениям