免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3208 | 回复: 0
打印 上一主题 下一主题

简单的对比远程和本地文件(只是对比,不包括容错)  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-29 10:17 |只看该作者 |倒序浏览
远程脚本,用crond定期执行(一天一次),然后导入到一个webroot中.

  1. #!/bin/sh
  2. find /usr/local/ftproot|while read i; do basename $i ;done>/webroot/remote_dir_list
复制代码


本地的同步脚本,利用wget实现,crond定期执行,2小时一次.

  1. #!/bin/sh
  2. killall -9 wget
  3. sleep 6
  4. killall wget
  5. sleep 6
  6. wget -q -nH --passive-ftp -r -N -l inf -P/usr/local/ftproot ftp://xxxxx:xxxx@xxx.xx.xx.xxx:xxxx
  7. #
  8. chown -R 501.500 /usr/local/ftproot
  9. chmod -R 755 /usr/local/ftproot
复制代码


本地的删除同远程服务器对比后多余的文件(每天一次)

  1. #!/bin/sh
  2. #difine local ftpdir
  3. ftpdir=/usr/local/ftproot
  4. #
  5. wget http://xxx.xxx.xxx.xxx/remote_dir_list -O /tmp/remote_dir_list
  6. #get remote ftp list
  7. #
  8. find ${ftpdir}|while read i; do basename $i ;done>/tmp/local_dir_list
  9. sort /tmp/local_dir_list >/tmp/local_dir_list.sort
  10. sort /tmp/remote_dir_list >/tmp/remote_dir_list.sort
  11. if [ -s /tmp/local_dir_list.sort -a -s /tmp/remote_dir_list.sort ]; then
  12. comm -3 /tmp/local_dir_list.sort /tmp/remote_dir_list.sort >/tmp/diff.list
  13. fi
  14. for file in `cat /tmp/diff.list|sed s/^[[:space:]]//g`
  15. do
  16. find ${ftpdir} -name $file|xargs /bin/rm -rf
  17. done
  18. rm -rf /tmp/local_dir_list*
  19. rm -rf /tmp/remote_dir_list*
  20. rm -rf /tmp/diff.list*
复制代码



因为是一个下载站群..流量巨大,我也试过rsync,但是那个效率始终不能让我满意,太慢了.所以我就放弃了文件容错...因为用wget同步一般也不会出错的.
所以只要对比文件列表让后删除就ok了..
没有用到什么高深的shell技巧..只是一个简单应用..大家斧正..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP