Можно ли удалить файл в nextcloud на основе даты добавления метки?

Как настроить автоматическое удаление файлов в Nextcloud, которые были загружены более 14 дней назад и имеют определенную метку? Возможно, использование PostgreSQL для этой задачи?
  • 14 декабря 2023 г. 4:37
Ответы на вопрос 1
Да, возможно удалить файлы в Nextcloud на основе даты добавления метки. Для этого можно использовать функциональность раздела "История версий" в Nextcloud.

1. Войдите в свою учетную запись в Nextcloud.

2. Откройте файл, который вы хотите пометить для удаления.

3. Нажмите на кнопку "История версий" в верхнем меню (иконка с часовым стеком).

4. В открывшемся окне "История версий" выберите определенную версию файла, которой вы хотите добавить метку.

5. На верхней панели инструментов нажмите на кнопку "Добавить метку". Укажите название и описание метки, чтобы легко идентифицировать файлы для удаления.

6. Закройте окно "История версий".

Теперь, чтобы автоматически удалять файлы в Nextcloud, которые были загружены более 14 дней назад и имеют определенную метку, можно использовать PostgreSQL и планировщик задач cron.

1. Убедитесь, что у вас установлен PostgreSQL на сервере Nextcloud.

2. Войдите в базу данных PostgreSQL с помощью команды в терминале:
```
sudo -u postgres psql
```

3. Создайте таблицу для хранения информации о метках и файлов, подлежащих удалению, с помощью следующего SQL-запроса:
```
CREATE TABLE auto_delete (file_id int PRIMARY KEY, file_path text, label text, timestamp timestamp);
```

4. Настройте планировщик задач cron для запуска PHP-скрипта в фоновом режиме на сервере Nextcloud. Создайте новую задачу в cron с помощью команды:
```
sudo crontab -e
```
И добавьте следующую строку, чтобы запустить скрипт каждые 10 минут:
```
*/10 * * * * php -f /path/to/nextcloud/auto_delete.php
```

5. Создайте PHP-скрипт с именем "auto_delete.php" и сохраните его в каталоге "/path/to/nextcloud". В этом скрипте выполните следующий код, чтобы удалить файлы с просроченными метками:
```php
<?php

require_once '/path/to/nextcloud/config/config.php'; // Укажите полный путь до файла конфигурации Nextcloud
$config = new \OCP\Config();

$db = new \PDO($config->getSystemValue('dbhost', 'localhost'), $config->getSystemValue('dbuser', 'nextcloud'), $config->getSystemValue('dbpassword', ''), array(\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
$db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$db->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);

// Удаление файлов с просроченными метками
$query = $db->prepare("SELECT file_path FROM auto_delete WHERE timestamp < NOW() - INTERVAL '14 days'");
$query->execute();

$filesToDelete = $query->fetchAll(\PDO::FETCH_COLUMN);

foreach ($filesToDelete as $filePath) {
    \OC_Helper::rmdirr($filePath);
}

// Удаление записей о файлах из таблицы auto_delete
$db->exec("DELETE FROM auto_delete WHERE timestamp < NOW() - INTERVAL '14 days'");
```

6. Сохраните и закройте файл "auto_delete.php".

Теперь файлы, которые были загружены более 14 дней назад и имеют определенную метку, будут автоматически удаляться с использованием PostgreSQL и запуска скрипта "auto_delete.php" через планировщик задач cron.
Похожие вопросы