Name : BETA-TESTERS
Project name : ZW3B-API-BETA-TESTERS
Authorized. - 200 - Client API Name and Origin Wildcard OK
Déplacer des fichiers de type file-YYYYMMDD.ext vers une directory Year/Month/Day/
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() { 027 echo "# ---------------------------------------" 028 echo "# Script pour les contents de motion (camera)" 029 echo "# Description : Move images et vidéos dans un répertoire selon la date" 030 echo "# ----" 031 echo "" 032} 033 034function directory_day() { 035 036 if [ -e ${DIR}${DATE}/ ] && [ -d ${DIR}${DATE}/ ]; then 037 038 echo -e "Le répertoire de la journée ${DIR}${DATE}/ exist !" 039 040 else 041 042 echo -e "On crée le répertoire de la journée ${DIR}${DATE}/" 043 mkdir -p ${DIR}${DATE}/ 044 045 fi 046 047 echo "" 048} 049 050function list_videos() { 051 052 echo "Liste des Vidéos"; 053 echo "" 054 055 if [ "`ls -l ${DIR}${VID} 2>/dev/null |wc -l`" -ge "1" ]; then 056 057 for i in ${DIR}${VID}; do 058 059 file=`echo $i |cut -d/ -f 5 | 060 awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now != day) 061 print "-" ""substr(,1,4) ""substr(,5,2) ""substr(,7,2) ""substr(,9,4) ""substr(,13,2) ""substr(,15,4)}'`; 062 063 file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,1,4) }'`"; 064 file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,5,2) }'`"; 065 file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,7,2) }'`"; 066 067 DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/"; 068 069 echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file"; 070 071 if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then 072 echo -e "tLe répertoire ${DIR_4_FILE} exist !"; 073 echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file" 074 mv ${DIR}$file ${DIR_4_FILE}$file 075 echo "" 076 else 077 echo -e "tOn crée le répertoire ${DIR_4_FILE}"; 078 mkdir -p ${DIR_4_FILE} 079 echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file" 080 mv ${DIR}$file ${DIR_4_FILE}$file 081 echo "" 082 fi 083 084 done; 085 086 else 087 echo "- Aucune Vidéo"; 088 fi 089 090 echo "" 091 092} 093 094function list_images() { 095 096 echo "Listes des images"; 097 echo "" 098 099 if [ "`ls -l ${DIR}${IMG} 2>/dev/null |wc -l`" -ge "1" ]; then 100 101 for i in ${DIR}${IMG}; do 102 103 file=`echo $i |cut -d/ -f 5 | 104 awk -F - '{ date_now=substr($(date),7,2); day=substr(,7,2); if (date_now != day) 105 print "-" ""substr(,1,4) ""substr(,5,2) ""substr(,7,2) ""substr(,9,4) ""substr(,13,2) "-"}'`; 106 107 file_year="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,1,4) }'`"; 108 file_month="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,5,2) }'`"; 109 file_day="`echo $i |cut -d/ -f 5 | awk -F - '{ print substr(,7,2) }'`"; 110 111 DIR_4_FILE="${DIR}${file_year}/${file_month}/${file_day}/"; 112 113 echo " - On se prépare à déplacer ${DIR}$file vers ${DIR_4_FILE}$file"; 114 115 if [ -e ${DIR_4_FILE} ] && [ -d ${DIR_4_FILE} ]; then 116 echo -e "tLe répertoire ${DIR_4_FILE} exist !"; 117 echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file" 118 mv ${DIR}$file ${DIR_4_FILE}$file 119 echo "" 120 else 121 echo -e "tOn crée le répertoire ${DIR_4_FILE}"; 122 mkdir -p ${DIR_4_FILE} 123 echo -e "tt+ ${DIR}$file --> ${DIR_4_FILE}$file" 124 mv ${DIR}$file ${DIR_4_FILE}$file 125 echo "" 126 fi 127 done; 128 129 else 130 echo "- Aucune Image"; 131 fi 132 133 echo "" 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