Ruby on rails 获取每个用户的文件夹大小和所有内容
我在几个SAAS站点中看到过,人们存储数据,该站点跟踪服务器上的数据量。它们向用户显示该信息 使用RubyonRails,其中一些站点是如何做到这一点的?似乎有足够多的网站这样做,我只是不知道有一个标准的方式。还是每个人都在实施自己的解决方案 如果每个人都实施了自己的解决方案,那么这是一个好方法吗Ruby on rails 获取每个用户的文件夹大小和所有内容,ruby-on-rails,ruby,linux,Ruby On Rails,Ruby,Linux,我在几个SAAS站点中看到过,人们存储数据,该站点跟踪服务器上的数据量。它们向用户显示该信息 使用RubyonRails,其中一些站点是如何做到这一点的?似乎有足够多的网站这样做,我只是不知道有一个标准的方式。还是每个人都在实施自己的解决方案 如果每个人都实施了自己的解决方案,那么这是一个好方法吗 `du -s <directory>` `du-s` 而且只是解析数据。du对于这类事情来说是一个非常好的工具,它可能比手动滚动要快,但是解析输出时需要小心 目录名称中包含外来字符并
`du -s <directory>`
`du-s`
而且只是解析数据。
du
对于这类事情来说是一个非常好的工具,它可能比手动滚动要快,但是解析输出时需要小心
目录名称中包含外来字符并不少见,其中包括明显的like空格和不寻常的like换行符。如果有人这样做,这使得解析du
的输出有些不可靠:
% mkdir "foo
1234 bar"
如果这没什么大不了的,那就忘了它吧。否则,您将需要递归并手动计算,这对于大型文件系统上的Ruby解释器来说可能需要一段时间。所有这些都取决于站点如何存储实际数据以及用户上传到其中的对象的元数据。数据完全可能没有存储在传统的文件系统(如S3)上。因此,在类似于
du
的情况下,这种方法不起作用
因此,如果您将元数据(包括大小)存储在数据库中,您只需通过查询获得上载大小的总和,而不必访问底层文件系统…我根本没有想到这一点。这给了我更多的思考。谢谢。如果使用文件系统存储,像
du
这样的东西就足够了。请记住,根据磁盘上设置的块大小,文件在磁盘上占用的空间量可能不同于文件大小,因此实际磁盘空间量大于单个文件大小的总和。是的,文件将位于文件系统上,因此du看起来是我的最佳选择。我只是从来没有想过要获取元数据并存储它。这是一个如此简单的想法,虽然我不知道为什么我没有想到它。谢谢。请记住,du在IO子系统上可能非常密集,因此您可能不想一直运行它,尤其是不想按用户要求运行,因为这样可能会很快遇到性能问题。我将此标记为答案,因为我最终使用的是du
。