2016-07-16 292 views
0

最後編輯:$DATE變量是什麼擰我。出於某種原因,當我重新格式化它時,它工作正常。有誰知道爲什麼這是一個問題?在bash腳本「沒有這樣的文件或目錄」

下面是最終的備份腳本:

#!/bin/bash 
#Vars 
OUTPATH=/root/Storage/Backups 
DATE=$(date +%d-%b) 

#Deletes backups that are more than 2 days old 
find "$OUTPATH"/* -mtime +2 -type f -delete 

#Actual backup operation 
dd if=/dev/mmcblk0 | gzip -1 - | dd of="$OUTPATH"/bpi-"$DATE".img.gz bs=512 count=60831745 

舊腳本:

#!/bin/bash 
#Vars 
OUTPATH=~/Storage/Backups 
DATE=$(date +%d-%b_%H:%M) 

#Deletes backups that are more than 2 days old 
find "$OUTPATH"/* -mtime +2 -type f -delete 

#Actual backup operation 
dd if=/dev/mmcblk0 | gzip -1 - | dd of="$OUTPATH"/bpi_"$DATE".img.gz bs=512 count=60831745 

這是一個腳本來備份我的香蕉PI圖像發送到外部硬盤驅動器。我是新來的bash腳本,所以我知道這將是一個簡單的辦法最有可能的,但這裏是我的問題:

我正在從〜/腳本

和輸出文件的腳本〜/存儲/備份(掛載點爲外置硬盤,在我的/ etc/fstab中指定。

的命令的工作正常時,OUTPATH=.,即它只是備份到腳本運行的當前目錄。我知道我可以只要將腳本到備份文件夾,並從那裏運行它,但我想加入到我的crontab,所以如果我能保持所有腳本在一個目錄只是爲了組織的目的,將是不錯的。

只是想知道如何正確地使腳本寫我的形象到$OUTPATH變量。

編輯:我試圖改變$OUTPATH變量設置爲位於/dev/root/(腳本本身也位於同一臺設備上)和它的工作一個test目錄,所以我想它只是試圖寫一個問題圖像以一個裝置,該裝置從該腳本本身位於一個不同

/etc/fstab與所述外部HDD I想用線如下:

/dev/sdb1 /root/Storage exfat defaults 0 0

/root/Storage/Backups文件夾我s我正在嘗試寫入映像到

+1

shebang行錯了:'#/!bin/bash' - >'#!/ bin/bash'。除此之外,你的腳本對我來說工作得很好。 – John1024

+0

哎呦複製的腳本在當這僅僅是一個錯誤。有趣的是,它適用於你雖然,不知道這對我來說意味着什麼 –

+0

這裏顯示的腳本和你正在使用的腳本之間是否還有其他區別?在shell腳本中,細微的變化可以產生很大的不同。 – John1024

回答

0

使用備份目錄的完整路徑名填充OUTPATH。

+0

我以爲我做過,這可能是一個非常蹩腳的問題,但是當我發出'pwd'命令時不是打印到屏幕上的完整路徑名?因爲我從字面上複製並粘貼它。除非你的意思是'/ dev/sdaX'路徑? –

+0

是的,@MichaelBoyd,你的腳本,如上所示,確實提供完整的(絕對)路徑名。 – John1024

0

OUTPATH=~/Storage/Backups 

波浪線擴展在find

find "$OUTPATH"/* .... 

"$OUTPATH"時,不執行你可以與FULLPATH更換~OUTPATH或在find的實際路徑替換OUTPATH

相關問題