Linux下用Ant进行msyql数据库定时复制和全量备份

本文介绍Ant脚本中的转义字符及通配符用法,并演示如何利用Ant进行文件复制及远程执行MySQL备份命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 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?/**"/>表示不包含build?目录,如果build1,build2等

<exclude name="**/*.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

然后测试下:
[root@locahost]# ssh 10.2.50.26
显示如下结果:
Last login: Wed Dec 12 13:40:39 2012 from 10.2.144.59
表明ssh不输入密码已经可以正常工作了

 

基于上述的几个步骤,就可以实现ant脚本,远程登录并执行简单mysql复制和备份以及文件的复制备份功能。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值