Перейти к содержанию
Форум русской поддержки продукции Synology

Скрипты удаления старых файлов с Synology


Рекомендованные сообщения

Всем доброго времени суток.

Возникла такая проблема.

 

Есть Около 20-ти видео регистраторов с камерами видео наблюдения.

Примерно от 8 штук на каждом видео регистраторе.

Все настроены сливать видео в свои ftp каталоги.

И вот спустя почти пол года, вижу картину, моё хранилище заполнено на все 100%

Не беда подумал и удалил старые файлы, по дате более 4-5 месяцев. Удалил ручками. Использовал FTP -клиента FileZilla.

 

Значит тут же появилась желание автоматизировать этот процесс.

Тех поддержка в контакте ответила, что Synology не умеет самостоятельно влиять на файлы пользователей.

То есть авто удаления нет.

Но есть возможность написать скрипт и засунуть его в планировщик.

 

Собственно создал эту тему для того, что опытные люди помогли написать правильный скрипт и корректно его засунуть в планировщик.

 

Мои требования и пожелания к скрипту:

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

Так как видео регистраторы далеки от идеала (все китайское, работает как умеет, на большее не способно). Пути к файлам порой дикие. Пример такой - видео регистратор в своем home каталоге создает такие папки " /M_5 /ftp /192.168.2.100 /192.168.2.112 /2016-06-14/DVR_ch1_20160614084118_20160614084249_0802.dav "

/M_5 - это и есть домашний каталог одного из видео регистраторов.

/ftp - это походу видео регистратор так обозначает, вид подключения, через которой он сливает видео файлы. Нафига он это делает, кто его знает.

/192.168.2.100 - ip значит моего Synology в моей внутренней подсети. На него есть проброс портов с внешнего белого IP

/192.168.2.112 - внутренний ip самого видео регистратор, он так же находится в одной подсети

/2016-06-14 - ну и собственно сам каталог с датой, в который уже и пишутся файлы с видео регистратора. За каждый день свой каталог с файлами.

/DVR_ch1_20160614084118_20160614084249_0802.dav - собственно один из файлов с видео регистратора. Его имя формируется автоматически (ИМЯ регистратора / номер камеры / за период с ГГГГ:ММ:ДД / ЧЧ:ММ:СС по период ГГГГ:ММ:ДД / ЧЧ:ММ:СС_ какой-то проверочный код регистратора или камеры).

2 - Что бы скрипт отрабатывал вне зависимости от того, насколько заполнен раздел. Та как в примере по ссылке ниже, у человека возникли проблемы

3 - Что бы скрипт не выполнялся медленно и забивал весь проц на 100% на пару часов. Так как видео регистраторы активно видосы льют 24/7/365.

4 - видимо сюда стоит написать пожелание, что бы язык скрипта был поддерживаемым самими устройствами Synology

5- Что бы скрипт обходил все домашние каталоги пользователей и удалял файлы по условиям. Собственно для каждого видео регистратора был создан отдельный домашний каталог и отдельный пользователь с правом входа только в свой домашний каталог.

 

 

У меня куплен - Synology RS2414+ (Версия DSM - DSM 6.0.1-7393 Update 2). С полными корзинами винтов и общим объемом хранилища 44,3Тб.

 

Про скрипты по гуглил и нашел один из примеров тут https://www.linux.org.ru/forum/admin/11261088

Подскажите добрые люди.

Давайте напишем вместе классный скрипт, а может и не один. И не только для этой цели.

 

Кому будет полезна данная тема. На этом форуме видел, люди используют Synology в качестве видео регистраторов для дач. Очевидно эта тема для них даст пользу. Кроме видео файлов могут быть и другие файлы.

 

В видео регистраторах бывают косяки, например они забывают правильную дату, хотя есть NTP сервер. Фиг знает почему, приходится ручками менять дату на любую другую, после видео регистратор по NTP протоколу снова начинает получать правильную дату.

Исходя их такого глюка, файлы и папки могут получать порой удивительные даты в названиях, например 2000-01-01.

Потому хочется что бы срипт умел смотреть дату из файловой системы, а не из имени файла.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

Возникла аналогичная задача. Говорят есть планировщик на Synology, в нем можно указать про запуск нужно скрипта ежедневно. Но сам скрипт нужно писать и это основная проблема. Кто может помочь?

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...

Скрипт то достаточно простой:

#!/bin/sh

find /path/to/your/folder/ -mtime +30 -exec rm -rf {} \;
find /path/to/your/folder/ -type d -depth -exec rmdir {} + 2>/dev/null \;

 

Первый find удаляет все файлы старше 30 дней

Второй find убивает пустые папки

 

Вам осталось заменить /path/to/your/folder/ на путь к вашему каталогу.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...
Скрипт то достаточно простой:

#!/bin/sh

find /path/to/your/folder/ -mtime +30 -exec rm -rf {} \;
find /path/to/your/folder/ -type d -depth -exec rmdir {} + 2>/dev/null \;

 

Первый find удаляет все файлы старше 30 дней

Второй find убивает пустые папки

 

Вам осталось заменить /path/to/your/folder/ на путь к вашему каталогу.

 

Спасибо!

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Сделал так в планировщике но у меня чет не работает. Что может быть?

 

#!/bin/sh

find /volume1/BACKUP/Sbis/-mtime +14 -exec rm -rf {} \;

find /volume1/BACKUP/Droopbox/-mtime +14 -exec rm -rf {} \;

find /volume1/BACKUP/Dsibs/-mtime +14 -exec rm -rf {} \;

find /volume1/BACKUP/Promeg/-mtime +14 -exec rm -rf {} \;

find /volume1/BACKUP/SQL/-mtime +14 -exec rm -rf {} \;

 

На почту вот что падает

 

Задача: ClearOldFiles

Время запуска: Wed, 10 Apr 2019 00:52:44 GMT

Время остановки: Wed, 10 Apr 2019 00:52:44 GMT

Текущее состояние: 1 (Прервано)

Стандартный вывод/ошибка:

find: `/volume1/BACKUP/Sbis/-mtime': No such file or directory

find: `+14': No such file or directory

find: `/volume1/BACKUP/Droopbox/-mtime': No such file or directory

find: `+14': No such file or directory

find: `/volume1/BACKUP/Dsibs/-mtime': No such file or directory

find: `+14': No such file or directory

find: `/volume1/BACKUP/Promeg/-mtime': No such file or directory

find: `+14': No such file or directory

find: `/volume1/BACKUP/SQL/-mtime': No such file or directory

find: `+14': No such file or directory

 

 

Ссылка на сообщение
Поделиться на другие сайты
find /volume1/BACKUP/Sbis/ -type d -mtime +14 -exec rm -rf {} \;

Не работает

Скрипт сделал так

#!/bin/sh 
find /volume1/BACKUP/Sbis/ -type d -mtime +14 -exec rm -rf {} \;

 

Теперь такое

 

find: `/volume1/BACKUP/Sbis/-type': No such file or directory
find: `d': No such file or directory
find: `/volume1/BACKUP/Droopbox/-type': No such file or directory
find: `d': No such file or directory
find: `/volume1/BACKUP/Dsibs/-type': No such file or directory
find: `d': No such file or directory
find: `/volume1/BACKUP/Promeg/-type': No such file or directory
find: `d': No such file or directory
find: `/volume1/BACKUP/SQL/-type': No such file or directory
find: `d': No such file or directory

Ссылка на сообщение
Поделиться на другие сайты
  • 9 месяцев спустя...

b23e24c79324.png

 

сделал так. не происходит вообще ничего. что-то не так? русские буквы в пути?

и на почту ничего не прилетело.

Ссылка на сообщение
Поделиться на другие сайты
b23e24c79324.png

 

сделал так. не происходит вообще ничего. что-то не так? русские буквы в пути?

и на почту ничего не прилетело.

Скрипт от root запускаете?

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...
Скрипт от root запускаете?

разобрался. кириллица в скрипте. возможно, ещё и пробелы. указал путь, в котором только латиница и нет пробелов, сработало.

Ссылка на сообщение
Поделиться на другие сайты
  • 8 месяцев спустя...
Скрипт то достаточно простой:

#!/bin/sh

find /path/to/your/folder/ -mtime +30 -exec rm -rf {} \;
find /path/to/your/folder/ -type d -depth -exec rmdir {} + 2>/dev/null \;

 

Первый find удаляет все файлы старше 30 дней

Второй find убивает пустые папки

 

Вам осталось заменить /path/to/your/folder/ на путь к вашему каталогу.

 

Подскажите пожалуйста

 

1) Удаляет ли этот скрипт старые файлы в подпапках? Если да, то насколько глубоко? Если нет, то как это сделать?

2) Тот же вопрос. Удаляются ли пустые папки в подпапках и как это сделать?

Ссылка на сообщение
Поделиться на другие сайты

Так, удаление старых файлов удалось победить. Ура, спасибо за скрипт. Я использовал -atime т.к. отталкиваюсь не от времени создания файла, а от времени его последнего доступа к нему. 15 дней, после того как к нему последний раз обращались.

 

find /volume1/Fileserver/Public/ -atime +15 -exec rm -rf {} \;

 

Скрипт оббегает все вложенные папки до 9 уровня (глубже не стал создавать при тестировании), чему я тоже очень рад.

 

Но вот с удалением пустых папок беда. Не удаляет. Я тут с просторов еще пробовал разные варианты, пару раз удалялся сам просматриваемый каталог, что недопустимо. Подскажите в чем может быть дело?

Ссылка на сообщение
Поделиться на другие сайты

Ура, кажется заработало и с папками в этом виде:

 

find /volume1/Fileserver/Public/ -type d -mindepth 1 -exec rmdir {} 2>/dev/null \;

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...
×
×
  • Создать...