Перейти до змісту

Uploads: none, shared, copy та ручний sync

Стратегія задається глобально та перевизначається для кожного site:

files:
  strategy: none
  mappings:
    - path: docroot/sites/default/files
      strategy: none
    - path: docroot/sites/shop/files
      strategy: copy
    - path: docroot/sites/portal/files
      strategy: shared
      read_only: false

Шляхи — відносно Git checkout і однакові в source/target. Непідтримані стратегії, symlink paths, перетини mappings, source/target directories та шляхи поза checkout відхиляються. Активні shared/copy mappings потребують наявної source directory.

none

Менеджер не копіює та не монтує uploads. Використовуйте Stage File Proxy або наповнюйте локальні файли самостійно. Значення типове і не потребує source files.

shared

Docker bind mount підключає source directory у web container worktree за тим самим шляхом /var/www/html/<mapping.path>. Це дає Drupal спільний набір файлів без абсолютного host symlink, який може бути недоступний у контейнері.

Записи через Drupal/worktree-контейнер змінюють source uploads. Для читання без запису задайте read_only: true. Такий режим може не підходити site, якому потрібно створювати derivatives або cache-файли в цій теці.

На host каталог target залишається локальною текою; shared-вміст доступний контейнеру через bind. Тому IDE/host filesystem не показує його як host symlink. Наявні target host files не видаляються, але контейнер бачить bind source.

Gc видаляє контейнер/його volume; source uploads directory залишається на місці. Для завершення shared-режиму змініть strategy і повторіть init зі start. При auto_start: false зміни позначаються prepared/pending_start до запуску.

copy

Перший init копіює відсутні файли в незалежну target directory. Наявні target файли зберігаються. Receipt фіксує завершення; повторний init не оновлює copy автоматично. Зміни target не впливають на source.

Копіюється вміст каталогу, включно з .htaccess/.gitignore; symlinks усередині копії та special files відхиляються. Read/permission errors повертають помилку. Великі uploads можуть зайняти значний час і місце — shared і none обходяться без незалежної повної копії.

Ручний source → worktree sync

ddev wtk files sync
ddev wtk files sync --apply

Без --apply команда показує кількість змінених/нових файлів та приклади шляхів. З --apply вони оновлюються з source, включно зі зміненими target файлами. Додаткові target файли не видаляються. Source не змінюється. Працює тільки для copy mappings і тільки в managed linked worktree. Shared/none пропускаються.

Перед копіюванням повторно перевіряється, що source досі є checkout цього ж репозиторію. Source/target uploads не можуть містити один одного. Для заміни файлів використовуються тимчасовий файл і atomic replace; команда може бути повторена після збою.

Для Drupal multisite кожна тека files налаштовується окремо, незалежно від hostname/site mapping у drupal.multisite.