wget批量下载gitlab uploads的文件和图片

技术文档网 2021-04-13


  1. 背景

    • 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限)
    • 之前尝试用写Java工具下载
      • 遍历所有的.md文件
      • 正则表达式搜索"/uploads/[a-z0-9]+/\S+.[a-z]+" 找到上传的文件
      • 然后使用http或者调用wget直接下载
  2. 遇到的问题

    1. 写工具这种方式相对比较麻烦
    2. 一个最大的问题是用http或者wget下载会遇到权限的问题,因为如果要访问或者下载需要gitlab的ldap验证,否则无法下载真正的文件
    3. 浏览器这边直接访问拼接出来的下载url也是先跳转到验证界面,验证通过后才可继续下载
  3. 解决方案

    1. 不在自己使用工具,直接使用wget的批量下载功能
    2. 关于wget的权限验证,可以使用cookies的方式验证(ldap和http验证不同,http的话可以直接指定--http-user选项)
  4. 测试sample命令

    • wget指定了参数--header,指定cookie,这样就可以ldap验证成功

    • --exclude-directories 排除某些目录(不能排除wikis目录,否则uploads也被排除)

    • TODO 目前测试发现无法直接指定uploads目录,只能指定上层目录,然后通过exclude排除不需要的目录如commit

    /usr/local/bin/wget -r -np -nH -R index.html --header="Cookie:sidebar_collapsed=false; remember_user_token=xxx; _gitlab_session=yyy"  https://...gitlab/zzz
    
  5. 注意的问题

    • cookie获取可以直接通过chrome浏览器直接获取或者通过开发者工具copy as curl获取cookie部分
    • Runtime.exec() 不等同于直接执行command line命令,exec有很多重载形式
    • du -h查看uploads的文件大小,最好在open一下是否打开
  6. 实战步骤

    1. git clone wikis
    2. git remote -v 查看地址
    3. wget批量下载,指定cookies验证,排除某些目录,下载uploads
  7. 参考

相关文章

  1. wget批量下载gitlab uploads的文件和图片

    背景 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限) 之前尝试用写Java工具下载 遍历所有的.md文件

  2. shell/设置外网访问权限

    /sbin/route add default gw 10.94.144.1 该网段的默认路由地址即路由器的地址为10.xxx.xxx.1 而路由器是可以访问外网的 由于静态路由在网卡启动时会删除,所

  3. shell/文件权限操作

    文件安全与权限 文件类型 d 目录 l 符号连接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 普通文件 改变权限 符号模式 chmod [who] operator

  4. shell/条件测试

    测试语法 test condition #或 [ condition ] 使用方括号时,要注意在条件两边加上空格。 文件测试 测试状态: 符号 释义 -d 是否是目录 -f 是否

  5. 常用shell命令

    常用命令 查找类 find / -name "export.sh" which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文

随机推荐

  1. wget批量下载gitlab uploads的文件和图片

    背景 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限) 之前尝试用写Java工具下载 遍历所有的.md文件

  2. shell/设置外网访问权限

    /sbin/route add default gw 10.94.144.1 该网段的默认路由地址即路由器的地址为10.xxx.xxx.1 而路由器是可以访问外网的 由于静态路由在网卡启动时会删除,所

  3. shell/文件权限操作

    文件安全与权限 文件类型 d 目录 l 符号连接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 普通文件 改变权限 符号模式 chmod [who] operator

  4. shell/条件测试

    测试语法 test condition #或 [ condition ] 使用方括号时,要注意在条件两边加上空格。 文件测试 测试状态: 符号 释义 -d 是否是目录 -f 是否

  5. 常用shell命令

    常用命令 查找类 find / -name "export.sh" which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文