- ant的轉義字元
$是ant中需要轉義的,使用$$代替$,不能使用\$,在linux控制台下,輸入指令時用的是\$.
- ant的通配符和轉義字元
三種通配符:
**,*,?
?用于比對1個字元
*,比對任意字元,0個或者多個,常用于比對檔案類型,或者URL
**,任意目錄或者檔案,包含任意多個子目錄
以ant中copy的用法為例:
<copy todir="${src.dir}" verbose="false" preservelastmodified="true" >
<fileset dir="${home.dir}">
<exclude name="**/build?/**"/>
<exclude name="**/workspace/**"/>
<exclude name="**/*.java"/>
<exclude name="**/log.*"/>
</fileset>
</copy>
其中 <exclude name="**/build?*.java"/>,表示不包含所有java類型的檔案
<exclude name="**/log.*"/>,表示不包含所有檔案名為log,檔案擴充名任意的檔案
verbose="false" :不顯示copy的詳細資訊,比如哪個檔案被copy了;但如果出錯,或顯示copy出錯資訊。
preservelastmodified="true" :保留修改時間,這樣就容易看出哪些是新檔案。
ant中的copy 還可以指定編碼。
- ant在Linux下的遠端執行指令
<target name="copydb" description="backup db">
<tstamp/>
<mkdir dir="${db.bak.dir}"/>
<sshexec host="${db.host}"
username="${user}"
password="${password}"
command="mysqldump -uuser -ppassword -h192.168.1.2 -B t_work |gzip >${db.bak.dir}/${DSTAMP}${TSTAMP}t_work.sql.gz" trust="t
rue"/>
</target>
上述指令可實作 ssh登入,并遠端執行資料庫備份指令,
其中<tstamp/> ,會生産2個屬性,後面用到的${DSTAMP}和${TSTAMP},表示日期和時間,用于生産唯一id,使得檔案不重複
mysqldump -uuser -ppassword -h192.168.1.2 -B t_work |gzip >${db.bak.dir}/${DSTAMP}${TSTAMP}t_work.sql.gz" trust="true"
前半部分是一個 資料庫備份指令,後半部分是通過管道使用gzip壓縮,trust=”true"這個很有必要,表示2台機器互信,否者通常會失敗。許多人不知道mysql可以很好的管道支援。如果需要從192.168.1.2上将t_work資料庫導入192.168.1.3上,可以如下指令替換:
mysqldump -uuser -ppassword -h192.168.1.2 -B t_work |mysql -uuser -ppassword -h192.168.1.3
在實作用ant腳本進行2台機器的遠端登入執行指令前,需要使用RSA認證。可搜尋“Linux ssh 不輸入密碼”
其實scp也是一樣的。使用了該密鑰認證後,ssh,scp均不需要輸入密碼。
Linux SSH 互信 不需要輸入密碼具體操作
這一段不知道從哪摘下來的 寫道
Linux scp複制檔案,不需要輸入密碼的技巧
一,在linux100主機裡的使用者
運作
#ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/.username/ssh/id_rsa):#回車
Enter passphrase (empty for no passphrase):#回車
Enter same passphrase again:#回車
會在使用者目錄~/.ssh/産生兩個檔案,id_rsa,id_rsa.pub
二,把linux100主機上的id_rsa.pub檔案拷貝到linux200主機的root使用者主目錄下的.ssh目錄下,并且改名為authorized_keys
這樣在linux100主機上使用scp指令複制檔案到linux200上将不提示輸入密碼了,直接複制了。
寫道 在上面一步改名authorized_keys,有可能以及存在了,是以可以改成追加:
cat id_rsa.pub >>~/.ssh/authorized_keys
然後測試下:
[[email protected]]# ssh 10.2.50.26
顯示如下結果:
Last login: Wed Dec 12 13:40:39 2012 from 10.2.144.59
表明ssh不輸入密碼已經可以正常工作了
基于上述的幾個步驟,就可以實作ant腳本,遠端登入并執行簡單mysql複制和備份以及檔案的複制備份功能。