当前位置:  技术问答>linux和unix

关于增量拷贝的问题

    来源: 互联网  发布时间:2016-09-28

    本文导语:  现在有两个目录web1, web2, 里面都有若干子目录及文件, 现在想保持两个目录的文件结构及文件相同。 当web2中有更新时,只把更新的文件及文件夹拷贝到web1中,同时不更新即过滤掉web2中的以.svn结尾的文件及文件...

现在有两个目录web1, web2, 里面都有若干子目录及文件,
现在想保持两个目录的文件结构及文件相同。
当web2中有更新时,只把更新的文件及文件夹拷贝到web1中,同时不更新即过滤掉web2中的以.svn结尾的文件及文件夹。

请大侠们指点

|
我想你的web2是检出的SVN副本 所以带有.svn,而web1是export的 没有.svn目录,你想做到保持如果web2

目录更新了,把更新的内容也更新到web1目录吧!前段时间正好为了做增量编译,做了一个这样的脚本,我把

思路讲下:

1:写一个脚本,这个脚本首先到web2目录执行svn up命令,并把执行的结果写到一个tmp文件(/tmp/svn_up.list)

2:脚本中写一个函数,专门解析这个tmp文件,tmp文件中的内容一般形式如下
A file1
U file2
D file3
At revision 100.

其中A U D 分别表示增、改、删,可以根据解析到的是A或U或D 觉得是拷贝web2的文件到web1,还是删除web1中的文件。


给你这个解析函数
copyToLocal()
{
  local item
  declare -i index
  item=(`cat /tmp/svn_up.list | awk 'BEGIN{FS=" "} NF==2 {printf("%s %sn",$1, $2)}'`)
  index=0
  while [ ${index} -lt ${#item[@]} ]; do
        case "${item[$index]}" in
       A) if [ -d "web2/${item[$index+1]}" ]; then
            su - nm -c "mkdir web1/${item[$index+1]}"
          else
            cp -fp web2/${item[$index+1]} web1/${item[$index+1]}
          fi
             ;;
       U) cp -fp web2/${item[$index+1]} web1/${item[$index+1]}
             ;;
       D) rm -rf  web1/${item[$index+1]}
             ;;
       *)
             ;;
      esac
      index=$(($index+2))
  done
}


3: 你的脚本大致内容如下

#!/bin/sh

cd web2
svn up > /tmp/svn_up.list
copyToLocal

4: 执行这个脚本,你的需求就OK了

|
哦,Linux平台的cp有-u这个选项
那直接拷贝就行了cp -pRu web2/* web1/

|
用rsync来保持同步吧!
http://hi.baidu.com/litaosmile/blog/item/c7691f03a5ebd7eb09fa9342.html

|

你看看rsync的那些功能 看看需要哪些参数 看样子你2个目录都在本机而已 基本就是一句话
rsync --any-option web2 web1

你要定时执行 直接把这一句写到crontab里就行了
就算要写脚本不也就一句话吗
#!/bin/sh
rsync --any-option web2 web1

|
可以考虑使用cpio,自动忽略没有更新的文件
find web2 ! -name "*.svn"|cpio -pdm web1

|
cp有这个功能吗?哪个选项?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何进行MongoDB自动备份增量备份和恢复
  • 【centos增量备份】这种方式对已删除的文件是如何处理的?
  • 快速增量备份程序 DeltaCopy
  • 修改数据库文件及日志文件增量的sql语句
  • binlog的增量订阅&消费组件 canal
  • 如何在linux做增量备份以及还原
  • shell中for循环如何实现增量为2
  • 如何实现数据的增量收发
  • Android增量升级的方法和原理详细介绍
  • js本地存储和增量更新 rstoreinc
  • Linux ORCLE数据库增量备份脚本
  • rman备份脚本和rman增量备份脚本分享
  • 静态资源增量更新 hcliuLoad
  • linux自动运行rman增量备份脚本
  • mysql自动增量备份的实例方法(本地备份与远程备份)
  • mysql mysqldump数据备份和增量备份
  • 使用mysqldump导入数据和mysqldump增量备份(mysqldump使用方法)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    Android增量升级的方法和原理详细介绍 iis7站长之家