在Linux中利用变量给文件命名
前不久有一个Linux系统管理员向笔者求助.他说他们在Linux操作系统上部署了一个Oracle 10G的数据库系统.现在他们利用数据库系统中的数据泵工具从系统中备份数据.他们希望每天把这个备份文件复制到一个特定的地方.到这一步为止都没有问题.但是他们希望在复制的过程中,能够利用变量名对这个备份文件进行命名.如按星期几的不同,分别命名为1backup.dmp,2backup.dmp等等.前面的1、2就表示星期几的意思.这么设置的话,一个星期一个轮回.到下个星期一的话,新的备份文件就会把旧的备份文件替换掉.如此的话,备份文件所占用的硬盘空间也就不会无限制的增加上去. 笔者对于他们为什么不直接采用Oracle提供的备份工具制定备份策略对数据库进行备份感到不解.不过要实现上面这个利用变量来给文件命名的话,还是可以实现的.笔者根据他们企业的需求,给这个系统管理员详细的阐述了实现方法. 一、文件创建时间与系统时间的关系. 在利用变量来命名文件名字的时候(如时间变量),需要注意一个问题,就是文件的创建时间与系统时间的关系.如上面这个需求,如果某个文件是在星期一创建的,而在星期二时复制这个文件.那么此时文件的名字应该为多少呢?是按文件的创建时间来命名,还是按复制的时间来命名的.如果从上面这个需求来看,利用文件的创建时间来命名更加的合理.这个创建时间才真正体现了数据库的备份时间. 二、相关命令参数解析. 如果要把一个文件复制到另外一个地方,同时利用时间变量对其进行重命名的话,那么可以利用如下的命令来实现cp mydb.log "(date %w)"mydb.log.这个命令的意思就是把mydb.log复制到一个特定的位置(当前目录下),并对此进行重新命名.命名的规则就是在原来的文件变量前面加上一个时间参数,这里采用的是星期的时间变量. "(date %w)"这个参数就是截取星期几的时间变量.注意,这里的时间是按照文件的创建时间来的,而不是参考文件复制的时间.也就是说,如果这个文件的创建时间是星期三,而复制时间是星期四的话,那么这个变量的值就为3,而不是4.文件的创建时间为3.笔者以前刚开始接触Linux操作系统的时候,经常犯这个错误.希望笔者这个过来人常犯的错误,能够引起大家的警惕.
另外上面这个时间参数,要用双引号括起来.不过不这么做的话,那么系统就会提示这个命令有错误.这是一个语法上的错误.如果系统管理员在批处理程序中使用这个命令的话,那么最好能够进行预先测试.这些语法错误的话,就算再老到的系统管理员,一不小心就容易犯.实践是检验真理的唯一标准,这句话是不会错的. 还有一个小细节就是"(date %w)"与"(date %w)"有区别吗?这个既有区别,又可以说没有.这主要是看用在什么场合了.如果用在CP命令中,则中间加不加( )加号,是一样的.但是,在其他一些命令场合中,要加入中间这个加号.否则的话,系统会提示错误.如下面笔者要谈到的ECHO命令,就有这方面的要求. 三、利用Echo命令来进行测试. 如果系统管理员对于自己编写的命令参数不怎么肯定的话,那么就可以利用echo命令来进行测试.Echo命令可以显示环境变量的值,也可以显示某些特定变量的值.其实这些变量就是系统中的环境变量.如下图所示.利用echo $(date %w)就可以显示当天系统时间.这个命令只显示星期几.
,要利用echo命令来显示系统变量值的时候,在变量前面加上$符号.如果加上这个符号,系统就会认为这是一个环境变量,或者由环境变量转换过来的一个变量.如果不加这个符号的话,则操作系统会无法识别,也就不能够正常显示这个变量的值了. 其次,在这个变量中,中间加入 号.如上图所示,如果不加入这个 号的话,则 |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |