Find 带日期打包

今天需要将某个文件夹下的程序文件备份;挪到另外一个地方,方便修改!要筛选出cpp和h文件。

根据以经验一定要用find命令查找出来“*.cpp"和"*.h",然后用管道符或者-exec选项执行打包命令。形如下面几种形式:

find rate_bak -name "*.cpp" -o -name "*.h"|xargs tar vcf bak.tar --失败,只打包了最后一个文件,c覆盖模式

find rate_bak -name "*.cpp" -o -name "*.h"|xargs tarvrf bak.tar --可以打包成功,因为用r取代了c,变成追加模式;但是要先创建bak.tar文件,不然系统不自己创建、直接报错

find rate_bak -name "*.cpp" -o -name "*.h" -exec tar vcf bak.tar {} \;--失败,只打包一个文件,偶尔打包几个文件,就是不全

因为我用的是HP-UX系统,所以网上的其他的tar命令-T参数的没有列出;很遗憾上面的三种方法,系统毫不犹豫的告诉我、对不起、我不支持你,我是HP-UX,不要妄图我适应你;你修改你的命令吧!具体失败原因可以参考命令行后面的解释。根据上面的初步分析,可以解释出这种结果:

find利用管道符xargs传入参数的时候,find一个文件时就将文件扔给tar去处理,所以最后永远只有一个文件打包;

find利用-exec执行是,是find累计到一批文件是扔给tar执行,所以不全,但是有多个文件打包了;

find的xargs和exec处理文件是批量还是单个传出去,各个系统还不一样,网上有的资料刚好和我的描述相反;兄弟姐妹们,看来你们只能自己实践了,看看你们系统是个什么情况。

上面的方法不行,但是始终需要解决的,不能每次都ftp下载到本地,再去删除不想关的文件吧(其实1、2次还是蛮快的):

命令出炉(当然也是网上搜的,只要搜索用得好、没有解决不了的):

tar vcf bak.tar `find rate_bak -name "*.cpp" -o -name "*.h"`--成功了耶,find命令后置

在仔细分析一下这个命令,想想自己怎么没有想到这个命令呢(白翻了tar和find帮助了);还是自己思想先入为主,认为find命令肯定用在最前面啊,确实大多数情况也确实这样就可以解决问题了。想不到find命令后置有如此功效啊!


下面是带日期的自动打包


/bin/tarczf /opt/AuthServer/logs/backup_access-`date "+%Y%m%d"`.tar.gz `find /opt/AuthServer/logs -name "accessquote.log*" -mtime +7 `

/bin/tarczf /opt/AuthServer/logs/backup_auth-`date "+%Y%m%d"`.tar.gz `find /opt/AuthServer/logs -name "authlog.log*" -mtime +7 `

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值