Informations :
Dates
- Publish : : Sunday 11 august 2019
- Modification : Sunday 11 august 2019
- 691 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 69792
003-rw-r--r-- 1 root adm 5051616 août 9 18:12 01-20190809180934.avi
004-rw-r--r-- 1 root adm 44925218 août 9 20:38 04-20190809201830.avi
005-rw-r--r-- 1 root adm 33473 août 11 12:40 04-20190811195326-203.jpg
006-rw-r--r-- 1 root adm 31773 août 11 11:48 05-20190809195748-40.jpg
007-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/bash
002 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 date
008#
009# Date Create : 2019-08-11
010# Date Modify : 2019-08-11
011#
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}/ ]; then
037 038echo -e "Le répertoire de la journée ${DIR}${DATE}/ exist !"
039 040else
041 042echo -e "On crée le répertoire de la journée ${DIR}${DATE}/"
043mkdir -p ${DIR}${DATE}/
044 045fi
046 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" ]; then
056 057for i in ${DIR}${VID}; do
058 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} ]; then
072echo -e "tLe répertoire ${DIR_4_FILE} exist !";
073echo -e "tt+ ${DIR}$file -→ ${DIR_4_FILE}$file"
074mv ${DIR}$file ${DIR_4_FILE}$file
075echo ""
076else
077echo -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}$file
081echo ""
082fi
083 084done;
085 086else
087echo "- Aucune Vidéo";
088fi
089 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" ]; then
100 101for i in ${DIR}${IMG}; do
102 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} ]; then
116echo -e "tLe répertoire ${DIR_4_FILE} exist !";
117echo -e "tt+ ${DIR}$file -→ ${DIR_4_FILE}$file"
118mv ${DIR}$file ${DIR_4_FILE}$file
119echo ""
120else
121echo -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}$file
125echo ""
126fi
127done;
128 129else
130echo "- Aucune Image";
131fi
132 133echo ""
134}
135 136description_script
137directory_day
138list_images
139list_videos
140 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