2010-11-23 29 views
2

我想弄清楚是否可以設置一個cron作業,將所有文件從我的服務器上的一個文件夾轉移到另一個文件夾,然後從另一個文件夾中獲取一定數量的文件(隨機選擇的文件),並將它在原始文件夾中。如果是這樣的提示,我完全沒有使用cron的經驗,我只是不想用ftp登錄並手動進行傳輸。用cron傳輸文件?

回答

5

cron是非常簡單的,所有它做的是在一天的指定時間運行您選擇的命令。

在你的情況下,你可能想編寫一個使用rsync,scp或ftp傳輸文件的shell腳本,確保成功退出(檢查退出代碼,存儲在$?變量中),然後移動將該組文件放入原始文件夾中。

我會通過ssh密鑰使用rsync和無密碼身份驗證。這對安全性很好,如果你願意,你甚至可以限制接收端只允許ssh密鑰運行rsync的服務器端。

如果這個腳本稱爲/opt/scripts/myscript.sh,並且要每10分鐘運行一次,以下內容添加到你的crontab(運行crontab -e命令來編輯你的crontab):

*/10 * * * * /opt/scripts/myscript.sh

請記住,您在shell中可用的環境變量與cronjob運行時可用的環境變量不同,因此PATH等可能不同。這通常會導致cron作業在您運行它們的前幾次失敗(請參閱我的有關cron作業的法律:http://efod.se/blog/archive/2010/02/19/forsbergs-law-on-cron-jobs :-))。 cron的任何輸出都通過郵件發送給運行cron作業的用戶,這對調試很有幫助。簡單的調試將消息寫入/ tmp /中的某個文件通常也是讓您的cron作業運行的一種方式。

在許多情況下,以特殊用戶身份運行cron作業是有意義的。不要以root用戶身份運行cron作業,除非他們絕對必須擁有root用戶訪問權限,否則最好將特殊用戶作爲只在文件系統中具有有限權限的特殊用戶運行。

1

要編輯的cron文件:

crontab -e 

傳輸文件看起來像一個示例項:

30 3 * * *  rsync -av School/* [email protected]:~/School/ >| /home/username/CronLogs/school_update 

這些字段包括:分鐘,小時,日,月,星期幾,命令 所以在我的示例中,我通過執行列出的rsync命令每天在凌晨3:30傳輸文件。請注意*標記爲未使用的字段。

對於一個快速參考/教程,請參閱:this link