之前其實就有寫了backup的shell script,只是寫完後,加到/etc/crontab後,就沒有再去管它了。今天再去看一下我的備份檔案,發現一個都沒有備到,於是又把script和/etc/crontab拿出來再檢查一下,看到底有沒有出問題。
首先,我把crontab調成以下這樣(每分鐘都執行一次script),卻發現仍然沒有備份
* * * * * root /home/i314i/MEGA/backup/backupweek.sh
檢查很久,然後還把我的backupweek.sh拖到/底下
* * * * * root /backupweek.sh
還是不行。
爬了好多文,以為是root和user之間的問題,然後又調成這樣子,還是不行
* * * * * root sh /home/i314i/MEGA/backup/backupweek.sh
後來才發現,WTF……它的權限是預設成740,沒有執行權限,奇怪,為什麼會有這麼奇怪的權限?
-rw-r----- 2 i314i i314i 625 11月 3 00:31 backupweek.sh
於是
sudo chmod 744 backupweek.sh
以為這樣就可以執行了,殊不知還是不行……
接著再檢查一下code
cd ~
啊,因為我們在/etc/crontab設定的user是root,所以用這個方式refer到的directory並不是家目錄,而是根目錄……
所以又再把這段改成了
cd /home/i314i
好了,大功告成,花了我好多的時間找錯誤……
備份shell script:
https://github.com/i314i/myShellScripts
參考資料:
http://linux.vbird.org/linux_basic/0580backup.php
關於我:
我是沒一村,專長和興趣是程式、主動投資、科技商業模式。可以參考我的書單和比較熱門的文章:
可以安裝ssmtp,設定好mail address跟帳號密碼之後,每次執行cron都會寄log給你,就知道有沒有成功。我都用這個看看今天update了哪些package