我有一個FreeNAS 9.3安裝設置,並有5個網絡攝像頭捕獲圖片到NAS上的共享。我需要一個腳本,我可以每週運行一個cron作業,將文件移動到日期文件夾中,以便導航到特定日期以監視攝像機。Shell腳本來創建文件夾並將文件移動到新文件夾
的文件夾結構如下所示:
的根文件夾是
/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運行修改後的劇本後,我得到了以下錯誤:
[[email protected]] /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
你會得到什麼錯誤? – choroba
用'bash -ex'運行你的腳本來顯示指令並停止第一個錯誤 –
顯式路徑是什麼?修復一次'PATH'並讓shell找到命令。對命令路徑進行硬編碼只會導致問題(儘管這些問題也會變得模糊和罕見)。 – tripleee