s3cmd put文件的过程

通过 s3cmd 上传文件的命令是 s3cmd put,s3cmd 可以上传目录或者文件,不过需要注意的是,如果直接上传的是文件,在 s3cmd put 的过程中是比上传文件夹省去很多步骤的,具体可以看下源码里的 cmd_object_put 这个方法。

  Put file into bucket
      s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]

查看 s3cmd 的源码。可以留意到 fetch_local_list。这个方法主要是解析用户 s3cmd put 之后的参数。
在这里插入图片描述
解析参数的意义是用来判断上传的是文件还是文件夹,如果是文件夹,则需要加上 --recrusive 参数,然后去对文件目录去做遍历,获取文件夹下面所有的文件。从这个方法可以看到,如果是文件夹,那么耗时主要是在 _os_walk_unicode 遍历文件夹上。
在这里插入图片描述
而网上是有人推荐采取下面的这种方式去 put 文件夹的。

find . -type f | xargs -I {} s3cmd put {} s3://runzhliu/kevintest/{}

个人认为,不管是哪种方法,对于上传文件夹,最后都是要遍历整个文件夹的,但是下面的方法,是直接通过调用 linux 的命令来去做遍历,相对效率会比在 s3 中更高,而且省了很多计算 md5 类的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值