我有一个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
发布于 2015-08-21 10:33:20
您的for循环正在为其中一个摄像机创建一个归档文件夹,然后尝试将所有相机文件夹( all )--相机文件夹--移动到其中,然后尝试对其他每个相机文件夹执行相同的操作,但由于文件夹已经移动,因此失败。
我修改了你的密码,这对我有用。
#!/bin/bash
ROOT_DIR="/mnt/Data/Camera2"
BACKUP_DIR="${ROOT_DIR}/Archive"
CAMERAS="GCMF GCMR GCMS CHF 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 ${CAMERAS}
do
mkdir ${BACKUP_DIR}/${FOLDER}/${DATE_DIR} >> $LOG_FILE
mv -f -b ${ROOT_DIR}/${FOLDER}/Snapshot_time ${BACKUP_DIR}/${FOLDER}/${DATE_DIR}
done
https://stackoverflow.com/questions/32137509
复制相似问题