Цель

Заметки ИТ которые я не хочу потерять

menu_navigation

Owncloud автоматическое удаление старых файлов

Фото с моего смартфона автоматически заливаются в мой owncloud, большинство фотографий необходимы временно и когда на удаление вручную начало уходить слишком много времени, было решено написать скрипт, автоматически удаляющий, фото старше 3-4 месяцев. Вся информация ниже подходит и для форка Nextcloud.

Накидал быстро и засунул в cron
#!/bin/sh
# удаление старых фото
find /var/www/owncloud/data/user/files -iname "*.jpg" -type f -mtime +120 -exec rm -rf {} \;

Но оказалось что файлы не удаляются, и остаются в кэше, более того это могло привести к ошибкам в дальнейшем, так как информация о файлах хранится в БД. Тогда я добавил строчку сканирования папок после удаления, которую взял из документации.

sudo -u www-data /var/www/owncloud/./occ files:scan --all

Сканирование проходит не быстро, у меня заняло около часа, при двадцати тысяч файлов.
Казалось бы проблема решена, но нет. Выяснилось что во время сканирования файлы временно блокируются, и после окончания сканирования так и остаются заблокированными...
Чтобы решить эту задачку нужно перевести облако в режим обслуживания и удалить таблицу oc_file_locks в БД owncloud.

sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on
mysql -u root -p
USE db_owncloud
delete from oc_file_locks;
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off

После все манипуляций итоговый скрипт выглядит так:

#!/bin/sh
# Перевод в режим обслуживания
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on
# удаление старых фото
find /var/www/owncloud/data/user/files -iname "*.jpg" -type f -mtime +120 -exec rm -rf {} \;
# Удаление заблокированных таблиц
mysql -u root -pMyPassWorD <<MY_QUERY
USE db_owncloud
delete from oc_file_locks;
MY_QUERY
# Выход из режима обслуживания
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off
# Полное пересканирование папок
sudo -u www-data /var/www/owncloud/./occ files:scan --all




Комментариев нет:

Отправить комментарий