Informations :
Dates
- Publish : : Sunday 11 august 2019
- Modification : Sunday 11 august 2019
- 802 views
Share :
Ayant installer dernièrement le logiciel motion qui permet de capturer (selon votre caméra) des images à la detection de mouvement.
J'ai plusieurs fichiers qui sont stockés automatiquement dans un seul répertoire. Il y a des fichiers vidéos et des fichiers images.
Je souhaite les déplacer dans un répertoire plus approprié et cela avec la date selon cette arborescence /repertoire/par/default/annee/mois/jour/.
Script avec 7 lignes
001ls -l /var/lib/motion/002total 69792003-rw-r--r-- 1 root adm 5051616 août 9 18:12 01-20190809180934.avi004-rw-r--r-- 1 root adm 44925218 août 9 20:38 04-20190809201830.avi005-rw-r--r-- 1 root adm 33473 août 11 12:40 04-20190811195326-203.jpg006-rw-r--r-- 1 root adm 31773 août 11 11:48 05-20190809195748-40.jpg007-rw-r--r-- 1 root adm 232564 août 9 20:40 05-20190809203858.avi
Je me suis fais un script SHell. Le voici vim /root/motion-check.sh ;)
Script avec 143 lignes
001#!/bin/bash002 003#--------------------------------------------------------------------004# Auteur : LAB3W : O.Romain Jaillet-ramey (orj@lab3w.fr)005#006# Description : Script pour les contents de motion (camera)007# Move images et vidéos dans un répertoire selon la date008#009# Date Create : 2019-08-11010# Date Modify : 2019-08-11011#012#---------------------------------------------------------------------013 014#DATE="`date +%Y%m%d%H%M%S`";015DATE="`date +%Y/%m/%d`";016#DATE_DAY="`date +%d`";017 018# ---------------------------------------------------------------------------019DIR="/var/lib/motion/";020 021IMG="*.jpg";022VID="*.avi";023 024# ---------------------------------------------------------------------------025 026function description_script() {027echo "# ---------------------------------------"028echo "# Script pour les contents de motion (camera)"029echo "# Description : Move images et vidéos dans un répertoire selon la date"030echo "# ----"031echo ""032}033 034function directory_day() {035 036if [ -e ${DIR}${DATE}/ ] && [ -d ${DIR}${DATE}/ ]; then037 038echo -e "Le répertoire de la journée ${DIR}${DATE}/ exist !"039 040else041 042echo -e "On crée le répertoire de la journée ${DIR}${DATE}/"043mkdir -p ${DIR}${DATE}/044 045fi046 047echo ""048}049 050function list_videos() {051 052echo "Liste des Vidéos";053echo ""054 055if [ "`ls -l ${DIR}${VID} 2>/dev/null |wc -l`" -ge "1" ]; then056 057for i in ${DIR}${VID}; do058 059file=`echo $i |cut -d/ -f 5 |060awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now != day)061print "-" ""substr(,1,4) ""substr(,5,2) ""substr(,7,2) ""substr(,9,4) ""substr(,13,2) ""substr(,15,4)}'`;062 063file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,1,4) }'`";064file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,5,2) }'`";065file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,7,2) }'`";066 067DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/";068 069echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file";070 071if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then072echo -e "tLe répertoire ${DIR_4_FILE} exist !";073echo -e "tt+ ${DIR}$file -→ ${DIR_4_FILE}$file"074mv ${DIR}$file ${DIR_4_FILE}$file075echo ""076else077echo -e "tOn crée le répertoire ${DIR_4_FILE}";078mkdir -p ${DIR_4_FILE}079echo -e "tt+ ${DIR}$file -→ ${DIR_4_FILE}$file"080mv ${DIR}$file ${DIR_4_FILE}$file081echo ""082fi083 084done;085 086else087echo "- Aucune Vidéo";088fi089 090echo ""091 092}093 094function list_images() {095 096echo "Listes des images";097echo ""098 099if [ "`ls -l ${DIR}${IMG} 2>/dev/null |wc -l`" -ge "1" ]; then100 101for i in ${DIR}${IMG}; do102 103file=`echo $i |cut -d/ -f 5 |104awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now != day)105print "-" ""substr(,1,4) ""substr(,5,2) ""substr(,7,2) ""substr(,9,4) ""substr(,13,2) "-"}'`;106 107file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,1,4) }'`";108file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,5,2) }'`";109file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,7,2) }'`";110 111DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/";112 113echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file";114 115if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then116echo -e "tLe répertoire ${DIR_4_FILE} exist !";117echo -e "tt+ ${DIR}$file -→ ${DIR_4_FILE}$file"118mv ${DIR}$file ${DIR_4_FILE}$file119echo ""120else121echo -e "tOn crée le répertoire ${DIR_4_FILE}";122mkdir -p ${DIR_4_FILE}123echo -e "tt+ ${DIR}$file -→ ${DIR_4_FILE}$file"124mv ${DIR}$file ${DIR_4_FILE}$file125echo ""126fi127done;128 129else130echo "- Aucune Image";131fi132 133echo ""134}135 136description_script137directory_day138list_images139list_videos140 141 142echo "# Fin du script";143echo "# ---------------------------------------"
On execute le script de cette manière : /root/motion-check.sh après avoir apliqué les droits d'execution chmod u+x motion-check.sh.
Grâce à ce script j'ai maintenant les vidéos et photos classées par journée. Je m'y retrouve plus facilement ; je peut alors faire des rsync sur un autre serveur etc. On pourait lancer le script tous les jours en fin de journée par tache planifiée ; une crontab ;)
Cordialement, Romain

