免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3391 | 回复: 6

一个同步两个硬盘上文件夹内容的脚本, [复制链接]

论坛徽章:
0
发表于 2012-08-29 00:36 |显示全部楼层
由于需要把电脑硬盘上的东西备份到移动硬盘上,但是又懒得查那些文件是新增的,就使用下面这个脚本实现了下,在window下, linux下应该比这简单一点的。
  1. #!/usr/bin/perl
  2. use File::Copy;
  3. use warnings;
  4. #使用这个脚本实现两个文件夹的对比和同步文件夹内的内容,以本地硬盘数据为主

  5. my $disk_handle;
  6. my $mobi_disk_handle;
  7. opendir($disk_handle,"G:\\book") or die "open dir fail!\n";
  8. opendir($mobi_disk_handle,"H:\\book") or die "open dir fail!\n";

  9. my @disk_content=readdir($disk_handle);
  10. my @mobi_disk_content=readdir($mobi_disk_handle);

  11. chdir("G:\\book");

  12. my @diff;

  13. foreach my $tmp (@disk_content) {
  14.         foreach my $tmp2 (@mobi_disk_content) {
  15.                         if($tmp eq $tmp2){
  16.                                 $count++;                               
  17.                                 }
  18.         }
  19.         if($count eq 0){
  20.         push(@diff,$tmp);
  21.         }
  22.         $count=0;
  23. }

  24. print "you have these files must to sycn:\n";

  25. foreach my $dic (@diff) {
  26.         print "+++++>$dic\n"
  27. }

  28. foreach my $copy (@diff) {
  29.         if (-f $copy) {
  30.                 copy("G:\\book\\$copy","H:\\book\\$copy");
  31.         }
  32.         if(-d $copy){
  33.                 chdir("H:\\book");
  34.                 mkdir($copy);
  35.                 chdir("G:\\book");
  36.                 system("xcopy",$copy,"H:\\book\\$copy\\","/S");
  37.                
  38.         }
  39.        
  40. }

  41. print "syn is over\n";
复制代码

论坛徽章:
0
发表于 2012-08-29 08:32 |显示全部楼层
linux 直接cp -ru就行了,windows里我一直遇到中文路径的困扰,windows xp下,我用 -d 测试中文文件夹的话,需要先decode "gbk",$dir,然后 encode "gbk",$dir;这样才能测试成功,不晓得咋回事。

论坛徽章:
0
发表于 2012-08-29 09:04 |显示全部楼层
这个脚本还是过于简单,至少只能单向同步,另外,如果两个目录同时存在某个文件,而且该文件在上次同步后有改动,就不会被同步。

Windows下,有现成的同步和比较工具Beyond Compare,我是懒人,我就不自己写脚本。

论坛徽章:
0
发表于 2012-08-29 09:48 |显示全部楼层
太复杂了!rsync就能完全搞定!

论坛徽章:
0
发表于 2012-08-29 10:36 |显示全部楼层
对比文件名还是过于简单~~  

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
发表于 2012-08-29 11:44 |显示全部楼层
还是 rsync 方便些

论坛徽章:
0
发表于 2012-08-29 11:45 |显示全部楼层
功能比较简单,当作练手可以,实际应用还是用现成的工具吧。我也推荐一个,Win下用微软出品的SyncToy,免费哦~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP