作为一个运维,越来越像一个开发了;
简单的难的,全用脚本实现了,不写java却写起了shell,瞬间感觉自己帅(衰)帅(衰)的;


公司下达的任务:将一个740+G的文件夹备份到另一个服务器;看着挺简单,scp啥的早晚能搞定,无非是时间的事儿;好,下面来说说环境:

  1. 这个文件夹是个项目,里面会不停的生成录音文件(mp3和wav格式);
  2. 系统的总共容量为1T,其中录音文件已经占用了740G了;(考虑到压缩比的问题,没办法将740G的文件压缩打包后再传输,原因有两点:第一,容量不够,1T已经占用了740G,在将740G压缩打包的话,自己容量已经装不下了;第二,在压缩打包期间还会生成许多的录音文件,不能保证生成的压缩包里包含期间新生成的文件;)
    &&&这也是做这次测试的原因;

###################################
好了,其他的先不说,先订方案:使用tar压缩文件,然后传输;

    测试:
                在tar打包压缩期间,往被打包的文件里写入数据。生成的压缩包里是否包含写入的数据;
    目的:
                用于服务器上700+G的录音文件进行打包;压缩期间肯定会有新的录音文件生成,
                如果不包含期间写入的录音文件,那么就可以写脚本根据脚本获取压缩期间新生成的文件,
                之后再,将新的录音文件备份过去;如果包含,就需要另写脚本进行对比;
    过程:
                1.提前下载了5000+个MP3格式和wav格式的录音文件,存放在test文件夹内;
                再打开一个xshell窗口,写一个脚本,可以将a.txt、b.txt等文件mv到test内;
                先执行,tar czvf test.tar.gz ;再在另一个xshell窗口执行脚本将a/b文件mv到test内;
                然后tar xzvf test.tar.gz 查看里面没有a、b文件;
                2.同样的环境,不一样的是将脚本写成可以在test内touch文件的脚本;
                测试结果一样,解压后的文件夹内没有期间创建的文件;

    ###################################
    **后来在群里讨论,当执行tar开始压缩的时,tar就已经将test文件夹扫描并且缓存了,
    所以不会将期间新生成的文件压缩进去,
    但是压缩完毕后会有提示:“文件有改动”;
    但是测试用的大概是1G的文件,如果换成是740G的呢?

    **** 测试仅供参考,如需求不同可自己测试;
    后来写了一个脚本,监测文件夹内新生成的录音文件,
    然后使用scp传输,期间如果有新生成的录音文件就会被执行scp命令传输过去;
    740G !!! 传输了两天两夜;方法是有点笨,但是能确保不丢失文件,只多不少;