Операции с файловыми хранилищами

Сжатие всех файлов, ранее добавленных в файловое хранилище

Для сжатия всех файлов, ранее добавленных в файловое хранилище, в консоли интерфейса администратора выполните скрипт:

api.fileStorage.compressAll('storageCode')

где, storageCode — код файлового хранилища или null, если необходимо сжать файлы в базе данных (null указывается без кавычек).

Если с одним файловым хранилищем работает несколько приложений, то выполняйте скрипт на том, где необходимо продолжить работу с файлами из этого хранилища.

Перемещение файлов, ранее добавленных в файловое хранилище

Возможные операции:

  • Перемещение всех ранее добавленных файлов из одного хранилища в другое (файлы настройки не переносятся).
  • Перемещение одного файла в другое хранилище.

Для перемещения всех ранее добавленных файлов из одного хранилища в другое, в консоли интерфейса настройки выполните скрипт:

api.fileStorage.moveAll('oldStorageCode', 'newStorageCode')

где:

  • oldStorageCode — код файлового хранилища, из которого переносятся файлы, или null, если файлы переносятся из хранилища, расположенного в базе (null указывается без кавычек).

  • newStorageCode — код файлового хранилища, в которое переносятся файлы.

    Перенос файлов в хранилище, расположенное в базе, недоступен.

При переносе файлов из несжатого хранилище в сжатое, все переносимые файлы сжимаются. При переносе файлов из сжатого хранилище в несжатое, все переносимые файлы распаковываются.

Особенности переноса файлов из базы данных в файловое хранилище. После переноса файлов из базы данных в файловое хранилище, база данных автоматически в размере не уменьшается (СУБД отмечает место как освобожденное, но не возвращает его операционной системе). Чтобы освободить место на диске с базой данных, выполните следующие действия:

  • Для Postgresql выполните vacuumlo из пакета postgresql-contrib, а затем vacuum full.

    Внимание! Выполнение vacuum full приводит к временным блокировкам таблиц, поэтому должно проводиться в часы наименьшей нагрузки.

Описание всех скриптовых методов для операций с файловыми хранилищами, см. Методы API.

Скрипты выполняются в консоли интерфейса администратора, см. Скрипты, выполняемые в консоли.

Разделение и слияние файлов в файловых хранилищах

Разделение и слияние файлов в файловых хранилищах:

  • Разделение файлов — операция по присваиванию контента и хеша каждому файлу, вместо ссылки на один и тот же хеш.
  • Слияние файлов — операция по присваиванию ссылки на один и тот же хеш одинаковым файлам с последующим удалением дубликатов.

Перемещение файлового хранилища в файловой системе

Перемещение файлового хранилища в файловой системе может выполняться двумя способами.

  1. Перемещение каталога хранилища и изменение конфигурации приложения:

    1. Остановите приложение.
    2. Переместите каталог файлового хранилища в нужное место.
    3. Измените путь до файлового хранилища в конфигурационном файле file-storage.xml.
    4. Запустите приложение.

    Достоинства: простота, отсутствие необходимости множить файловые хранилища.

    Недостатки: простой приложения.

  2. Создание нового хранилища, перемещение в него файлов, отключение старого хранилище, удаление старого хранилища:

    1. Создайте каталог хранилища в файловой системе.
    2. Добавьте блок с описанием хранилища в конфигурационном файле file-storage.xml.
    3. Измените активное хранилище в конфигурационном файле file-storage.xml на новое. После применения настроек новые файлы будут помещаться в новое файловое хранилище.
    4. Примените настройки с помощью api.fileStorage.reload().
    5. Запустите копирование файлов из старого файлового хранилища в новое с помощью api.fileStorage.moveAll('oldStorageCode', 'newStorageCode').
    6. Когда перенос будет завершен и в старом файловом хранилище не останется файлов, удалите блок с описанием старого хранилища в конфигурационном файле file-storage.xml.
    7. Примените настройки с помощью api.fileStorage.reload().
    8. Удалите каталог со старым файловым хранилищем. Перед удалением рекомендуется сделать его резервную копию на случай, если не все файлы были перемещены в новое хранилище.

    Достоинства: все операции производятся при запущенном приложении.

    Недостатки: перемещение файлового хранилища требует больше времени.