{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

Сron – задачи, или как я организовал хранение записей с камер видеонаблюдения

В недавно построенном доме я решил организовать внешнее видеонаблюдение, так скажем, один из этапов в постройке «умного» дома.

Камеры были установлены и передавали видео в реальном времени, под хранение я использовал свой старый системный блок под операционной системой Ubuntu. Настроив камеры на сохранения записей по движению на компьютер, я был доволен проделанной работой. Но прошло время, и я столкнулся с тем, что свободное место на моем ПК закончилось и я начал чистить старые видеозаписи. Вот тут меня посетила идея автоматизировать удаление старых файлов самой системой. На помощь мне пришел Cron – он позволяет по расписанию запускать запрограммированные процедуры на ПК под управлением операционной системы под unix. Чтобы посмотреть существующий список Cron-задач, необходимо ввести в командной строке crontab -l, и в командной строке отобразится вся информация, связанная с cron-задачами, в том числе с примерами:

Сейчас я вам кратко расскажу о задаче в примере, первые пять параметров отвечают за время запуска, шестой параметр за запуск команды:

  • Первый параметр – минуты (0-59);
  • Второй параметр – часы (0-23);
  • Третий параметр – день месяца (1-31);
  • Четвертый параметр – месяц (1-12);
  • Пятый параметр – день недели (0-7) (0 или 7 понедельник);
  • Шестой параметр – команда для выполнения.

Соответственно, мы уже можем расшифровать пример – задача запускает архивацию домашней директории каждый вторник в пять утра.

С задачами понятно, а как удалить сами файлы, спросите вы?

Создадим скрипт вроде bat-ника на windows и будем cron’ом запускать.

На мое удивление, командная строка в unix-системах оказалась довольно-таки мощным инструментом, и решить мою задачу по поиску и удалению старых файлов оказалось очень просто. Создадим текстовый файл с расширением скрипта - .sh.

Внутри скрипта прописываем команды. Обратите внимание, что в начале файла должна быть строка «#!/bin/bash»:

· Find – поиск объектов;

· Rm – удаление объектов.

#!/bin/bash # Скрипт для ежедневного удаления файлов echo "Запуск удаления файлов" find /home/ftp/video/Camera1 -mtime +15 -exec rm -rf {} \; find /home/ftp/video/Camera2 -mtime +15 -exec rm -rf {} \; find /home/ftp/video/Camera3 -mtime +15 -exec rm -rf {} \; echo "Выдаем права" find /home/ftp/video -type d -mtime -1 -exec chmod 755 {} \; find /home/ftp/video -type f -mtime -1 -exec chmod 755 {} \;

Этот скрипт выполняет поиск объектов, которые были созданы больше 15 дней назад и удаляет их без подтверждения. Этот скрипт удаляет все объекты: и файлы, и директории. Обратите внимание на то, что некоторым камерам для записи необходимо наличие директории. Плюсом в этом скрипте я выдаю права на чтения. Всё, наш файл готов, теперь сохраняем его в своей директории и прописываем запуск этого файла в cron.

Для редактирования cron-задач необходимо в консоли запустить crontab с параметром -e, с этим параметром мы сможем вносить изменения.

Запускаем команду, спускаемся в самый низ и вставляем следующую строку:

0 23 * * * /home/video/filedel.sh

Сохраняем изменения, и всё готово. Задача по удалению старых файлов будет запускаться каждый день ровно в 23 часа.

Понадобилось немного строк кода для решения поставленной задачи, но у новичков в системах unix на поиск решения ушло бы время. Я надеюсь, мой опыт будет вам полезен. Если возникнут вопросы, пишите в комментарии, постараюсь оперативно ответить. А также, если будет интересен мой опыт в создании сервера на старом ПК и настройке камер, я с радостью отвечу. А если будет много вопросов, обязательно прокомментирую в новом посте.

Спасибо за прочтение!

0
Комментарии
-3 комментариев
Раскрывать всегда