s3cmd put文件的过程

时间:2022-07-22
本文章向大家介绍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 类的过程。