Имам инсталирана инсталация на FreeNAS 9.3 и имам 5 мрежови камери, които заснемат снимки за споделяне на NAS. Имам нужда от скрипт, който мога да изпълнявам като задача на cron на седмична база, който премества файловете в датирани папки, така че да е много по-лесно да навигирате до конкретна дата за наблюдение на камерите.
Структурата на папките изглежда така:
Основната папка е
/mnt/Data/Camera2
и в тази папка имам моите 5 камери
/mnt/Data/Camera2/CHF
/mnt/Data/Camera2/CHR
/mnt/Data/Camera2/GCMR
/mnt/Data/Camera2/GCMF
/mnt/Data/Camera2/GCMS
Във всяка от тези папки на камерата мрежовата камера автоматично създава папки като Snapshot_time и Record_alarm
Имам архивни папки
/mnt/Data/Camera2/Archive/CHF
/mnt/Data/Camera2/Archive/CHR
/mnt/Data/Camera2/Archive/GCMR
/mnt/Data/Camera2/Archive/GCMF
/mnt/Data/Camera2/Archive/GCMS
Това, което трябва да направи скриптът, е когато се изпълни, да направи директории във всяка от горните архивни папки с текущата дата, т.е. WB_21-08-2015
След като тези директории бъдат създадени, трябва да преместя съдържанието на горните папки на камерата в съответните архивни папки.
Питах във форумите на FreeNAS и не получих много помощ досега, но имам следния скрипт. Когато го стартирам, получавам всякакви грешки...
#!/bin/bash
ROOT_DIR="/mnt/Data/Camera2"
BACKUP_DIRS="$ROOT_DIR/Archive/GCMF $ROOT_DIR/Archive/GCMR $ROOT_DIR/Archive/GCMS $ROOT_DIR/Archive/CHF $ROOT_DIR/Archive/CHR"
DATE=$(date +%d-%m-%Y)
DATE_DIR="WB_$(date +%d-%m-%Y)"
LOG_DIR="$ROOT_DIR/Logs/WB_$(date +%d-%m-%Y)"
LOG_FILE="$LOG_DIR/${DATE}.txt"
/bin/mkdir -p $LOG_DIR
/bin/echo "Weekly DDL camera backup:" > $LOG_FILE
/bin/echo "" >> $LOG_FILE
for FOLDER in $BACKUP_DIRS; do mkdir "${FOLDER}/${DATE_DIR}" >> $LOG_FILE
mv -f -b $ROOT_DIR/GCMF/Snapshot_time $ROOT_DIR/Archive/GCMF/${DATE_DIR}
mv -f -b $ROOT_DIR/GCMR/Snapshot_time $ROOT_DIR/Archive/GCMR/${DATE_DIR}
mv -f -b $ROOT_DIR/GCMS/Snapshot_time $ROOT_DIR/Archive/GCMS/${DATE_DIR}
mv -f -b $ROOT_DIR/CHF/Snapshot_time $ROOT_DIR/Archive/CHF/${DATE_DIR}
mv -f -b $ROOT_DIR/CHR/Snapshot_time $ROOT_DIR/Archive/CHR/${DATE_DIR}
done
Моля помогнете!
РЕДАКТИРАНЕ: След стартиране на ревизирания скрипт от @Ecnarfi получавам следните грешки:
[root@DaffyDuck] /mnt/Data/Camera2/Scripts# /bin/bash -ex Final.sh
+ ROOT_DIR=/mnt/Data/Camera2
+ BACKUP_DIR=/mnt/Data/Camera2/Archive
+ CAMERAS='GCMF GCMR GCMS CHF CHR'
++ date +%d-%m-%Y
+ DATE=21-08-2015
++ date +%d-%m-%Y
+ DATE_DIR=WB_21-08-2015
++ date +%d-%m-%Y
+ LOG_DIR=/mnt/Data/Camera2/Logs/WB_21-08-2015
+ LOG_FILE=/mnt/Data/Camera2/Logs/WB_21-08-2015/21-08-2015.txt
+ /bin/mkdir -p /mnt/Data/Camera2/Logs/WB_21-08-2015
+ /bin/echo 'Weekly DDL camera backup:'
+ /bin/echo ''
+ for FOLDER in '${CAMERAS}'
+ mkdir /mnt/Data/Camera2/Archive/GCMF/WB_21-08-2015
+ mv -f -b /mnt/Data/Camera2/GCMF/Snapshot_time /mnt/Data/Camera2/Archive/GCMF/WB_21-08-2015
mv: illegal option -- b
usage: mv [-f | -i | -n] [-hv] source target
mv [-f | -i | -n] [-v] source ... directory
bash -ex
, за да покажете инструкциите и да спрете при първата грешка - person Ôrel   schedule 21.08.2015PATH
веднъж и оставете обвивката да намери командите. Твърдото кодиране на пътеките на командите може да доведе само до проблеми (въпреки че и те биха били неясни и редки). - person tripleee   schedule 21.08.2015