FTP定時批量下載文件(SHELL腳本及使用方法 )

1. 腳本實例shell

  將如下腳本保存爲 getftp.sh
bash

#!/bin/bash 
datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 <<!FTPRUN user user01 user01  prompt 
bin 
cd TXT  lcd 
/app/info/getftp mget ${datesign}*.txt bye  !FTPRUN 

 

腳本說明: 服務器

#!/bin/bash app

#代表該文本的內容爲SHELL命令 datesign=`date -d -95day +%Y%m%d` 編輯器

#聲明變量datesign,用來記錄須要獲取文件名中的日期標籤。 #-95day 表示距系統時間的天數,假現在天是20121123, #-2day就表示20121121。 測試

#%Y表示年,如2012,%y也表示年,可是格式爲12 #%m表示月,如11 #%d表示日,如23 spa

#一樣,%H,%M,%S分明表示時分秒, code

#以系統時間爲2012年11月23日10時55分44秒爲例 blog

#`date –d -2day +%Y-%m-%d %H:%M:%S` 的值爲:20121121 10:55:44 ftp -nv 12.2.2.28 <<!FTPRUN 進程

#登陸FTP服務器,12.2.2.28表示FTP服務器的IP地址 

#從!FTPRUN至代碼結束的!FTPRUN是FTP命令。 #!FTPRUN是本身隨意給的標示名 user user01 user01 

#給出FTP的用戶名和密碼。此處用戶名和密碼都是:user01 Prompt 

#該命令忽略FTP交互 Bin 

#二進制格式傳送 cd TXT 

#TXT表示數據文件在FTP服務器上的目錄。 lcd /app/info/getftp 

# /app/info/getftp數據文件要下載到服務器的目錄 mget ${datesign}*.txt 

#須要下載的文件,${datesign}爲前面聲明的變量,*表示通配符 Bye 

#FTP完成退出 !FTPRUN 

 


2. 執行腳本使其定時調用

  SHELL文件在執行時,可能會因存在特殊字符而出現問題。須要將 getftp.sh 文件轉換一下格式。 能夠直接在Linux下執行(假如不能運行則能夠賦予它執行的權限後在運行chmod +x ./getftp.sh):

DOS2UNIX /app/info/getftp/getftp.sh  

  /app/info/getftp爲 getftp.sh 腳本所在目錄。 

  經過vi編輯器根據實際環境對腳本進行相應更改,便可進行測試。 3. 自動執行配置 在Linux下執行:  

Crontab –e  * 5 * * * /app/info/getftp/getftp.sh  

  保存退出。代碼就會在天天5:00自動運行。  

 


附:cron調度進程說明 

  cron是系統主要的調度進程,能夠在無需人工干預的狀況下運行做業。有一個叫作crontab的命令容許用戶提交、編輯或刪除相應的做業。每個用戶均可以有一個crontab文件來保存調度信息。可使用它運行任意一個shell腳本或某個命令,每小時運行一次,或一週三次,這徹底取決於你。每個用戶均可以有本身的crontab文件,但在一個較大的系統中,系統管理員通常會禁止這些文件,而只在整個系統保留一個這樣的文件。系統管理員是經過cron.deny和cron.allow這兩個文件來禁止或容許用戶擁有本身的crontab文件。  

crontab的域  

爲了可以在特定的時間運行做業,須要瞭解crontab文件每一個條目中各個域的意義和格式。  

下面就是這些域:  第1列分鐘1~5 9  

第2列小時1~2 3(0表示子夜)  第3列日1~3 1  第4列月1~1 2  

第5列星期0~6(0表示星期天)  第6列要運行的命令  crontab的範例格式:  

下面是c r o n t a b的格式:  

分[]時[]日[]月[]星期[]要運行的命令 其中[]表示空格。  

crontab文件的一個條目是從左邊讀起的,第一列是分,最後一列是要運行的命令,它位於星期的後面。在這些域中,能夠用橫槓-來表示一個時間範圍,例如你但願星期一至星期五運行某個做業,那麼能夠在星期域使用1 - 5來表示。還能夠在這些域中使用逗號「,」,例如你但願星期一和星期四運行某個做業,只須要使用1 , 4來表示。能夠用星號*來表示連續的時間段。若是你對某個表示時間的域沒有特別的限定,也應該在該域填入*。該文件的每個條目必須含有5個時間域,並且每一個域之間要用空格分隔。該文件中全部的註釋行要在行首用#來表示。 crontab條目舉例 

30 21* * * /apps/bin/cleanup.sh 

上面的例子表示每晚的21:30運行/apps/bin目錄下的cleanup.sh。 45 4 1,10,22 * * /apps/bin/backup.sh 

上面的例子表示每個月一、1 0、2 2日的4:45運行/apps/bin目錄下的backup.sh。 10 1 * * 6,0 /bin/find -name "core" -exec rm {}  上面的例子表示每週6、週日的1:10運行一個find命令。 0,30 18-23 * * * /apps/bin/dbcheck.sh 

上面的例子表示在天天18:00至23:00之間每隔30分鐘運行/apps/bin/目錄下的dbcheck.sh。 

0 23 * * 6 /apps/bin/qtrend.sh 

上面的例子表示每星期六的11:00pm運行/apps/bin目錄下的qtrend.sh。  

  致謝:感謝您的耐心閱讀!

相關文章
相關標籤/搜索