2013-03-24 47 views
2

這裏的「沒有這樣的文件或目錄」,是我的一些代碼:上簡單的bash重定向

gzip -c $path > /var/www/wiki/backup/$now/$file.gz 

我gzip壓縮$path的內容(一個目錄路徑),然後發送壓縮文件到/var/www/wiki/backup/$now/$file.gz$now包含一個目錄名稱,$file是我想要寫入壓縮文件的名稱。

但是,在運行程序時,我得到這個錯誤:

backup.sh: line 20: /var/www/wiki/backup/Sunday/extensions.gz: No such file or directory 
             ^$now ^$file 

(第20行是上面給出的線)

爲什麼程序斷裂了嗎?我知道Sunday/extensions.gz不存在(雖然星期天做),這就是爲什麼我要求你寫信給它!

完整的程序代碼:

 
#!/bin/bash 

now=$(date +"%A") 
mkdir -p /var/www/wiki/backups/$now 

databases=(bmshared brickimedia_meta brickimedia_en brickimedia_customs) 
locations=("/var/www/wiki/skins" "/var/www/wiki/images" "/var/www/wiki/") 

for db in ${databases[*]} 
do 
#command with passwords and shoodle 
: 
done 

for path in ${locations[*]} 
do 
#echo "" > var/www/wiki/backup/$now/$file.gz 
file=`echo $path | cut -d/ -f5` 
echo $path 
gzip -c $path > /var/www/wiki/backup/$now/$file.gz 
done 
+2

路徑/var/..../Sunday是否存在? – suspectus 2013-03-24 15:46:11

+0

@suspectus是的。 (我創建它在文件的頂部!)(這件事情是否重要?) – ACarter 2013-03-24 15:48:26

+0

我的速度閱讀有時並不合適! – suspectus 2013-03-24 15:54:04

回答

4

創建的目錄是備份,gzip的是備份

mkdir -p /var/www/wiki/backups/$now 

gzip -c $path > /var/www/wiki/backup/$now/$file.gz 
+0

我是個白癡......乾杯! – ACarter 2013-03-24 16:12:54

+1

我自己多次做過類似的事! – suspectus 2013-03-24 16:14:50

+0

這個答案實際上幫助了我......結果我也輸錯了! – Jordan 2017-09-22 23:03:07

2

您的一個位置是「/ var/www/wiki /」。然後,你必須

file=`echo $path | cut -d/ -f5` 
gzip -c $path > /var/www/wiki/backup/$now/$file.gz 

由於$file包含空字符串,你試圖寫入/var/www/wiki/backup/Sunday/.gz。這是一個問題,但這不是你報告的錯誤。

當我嘗試gzip壓縮的目錄,我得到這個錯誤

$ gzip -c ./subdir/ > subdir.gz 
gzip: ./subdir/ is a directory -- ignored 

這是一個問題,但它不是你要舉報的錯誤。

@suspectus解決了您報告的問題。