2015-04-30 95 views
0

運行焦油當我要壓縮的文件夾手動我用命令:麻煩從crontab中

tar -zcvf $dirBackup-$actualTime.tgz $dirBackup; 

而且它完美的作品。當我解壓檔案時,結果是正確的。

但是,我從crontab運行相同的命令時出現問題:生成的tgz只顯示爲包含空文件。

crontab -l>> /home/user/Desktop/test/temp; 
echo "$min $hour * * * tar -zcvf $dirBackup-$actualTime.tgz $dirBackup">> temp; 
crontab temp; 

我是否需要更改crontab表達式中的任何內容?我必須是root才能運行crontab嗎?文件臨時文件已正確創建,並位於正確的文件夾中。

非常感謝您的關注!

+0

可以告訴你這個工作看起來像在crontab(而不是如何你試圖寫在那裏)?這個問題出現是因爲你使用了env vars,並且有趣的是(例如相對路徑,完整路徑?) – Dieselist

+1

發佈了'crontab -l'的輸出。 – iqstatic

回答

1

根據您的系統,crontab工作可能會或可能不會在您的$HOME目錄(事實上它們通常無論是在//var/cron運行)運行。在tar命令之前添加cd $HOME;

+0

我做到了,並且不起作用。也許這可能是特權的原因?我的意思是,有必要成爲root來執行crontab? – Reaper

+0

您可以通過再次運行'crontab -l'來檢查。 – lcd047

+0

@Reaper要回答您的問題,首先,不需要root用戶執行cronjob。您嘗試訪問的目錄應該可以從該用戶的上下文訪問。如果不是,那麼許可問題就會出現。 – iqstatic

1

您需要設置echo命令中用於將條目添加到cron作業中的變量值。一個示例腳本應該是這樣的:

#!/bin/bash 

min=30 
hour=17 
dirBackup=/home/user/Desktop 
actualTime=30-04-2015 

crontab -l >> /home/user/temp 
echo "$min $hour * * * tar -zcvf $dirBackup-$actualTime.tgz $dirBackup 2>&1 | tee /tmp/cron.log">> /home/user/temp; 
crontab /home/user/temp; 

產生的tar文件將在用戶的主目錄(與該cron是運行用戶)來創建。

爲了避免獲得了用戶的權限問題,你可以指定該cron是使用下面的命令來運行用戶:

crontab -u <username> <cron_file> 
+0

其實我從閱讀控制檯設置分鐘和小時的值。但我不知道爲什麼它不起作用。他們在確定的時間進行備份,但它是一個空文件。我讀過,有時需要在crontab文件中設置一個新行。真的嗎? – Reaper

+0

@Reaper值'dirBackup'通過了哪個值? 「dirBackup」的價值是否合理? – iqstatic

+0

是它正確的dirBackup的值。 – Reaper