ubuntu 16.04 在处理大文件时非常慢

ubuntu 16.04 在处理大文件时非常慢

我正在重写这个问题以避免混淆...在 Ubuntu 16.04 上,我不得不删除大约 6500 个文件。50% 是 RAW 图像,50% 是相关的 .XML 文件。总计 72GB。我使用的是三星 Evo SSD 500GB。我实际上先将文件移动到垃圾箱,然后删除它们。我注意到,仅将文件移动到垃圾箱就消耗了我所有的 RAM(8GB)和所有的 SWAP(8GB)。有没有一种设置可以让 Ubuntu 中的垃圾箱运行得更高效?我知道我可以强制删除文件并完全绕过垃圾箱,但这完全违背了垃圾箱的目的。或者这种行为是预期的?

答案1

这种行为是可以预料到的,因为当您使用 nautilus 删除某些内容时,它只会将其移至垃圾箱,正如您所知。

更正:这是不是预期的行为。正如 BB1 指出的那样,“移动”文件到垃圾箱实际上并没有将其移动到任何地方,它只是更新其 inode 以反映位置。

我猜测你的内存被占用了,因为删除(或处理)一堆小文件比删除一个大文件需要更多的系统资源。

垃圾行为似乎不太可定制。遗憾的是,对此没有太多可以做的事情。你可以研究一下trash-cli,但我不知道它是否会更有效率。

当我需要删除一堆小文件时,我总是从 shell 中删除,因为这样速度更快。即便如此,我在尝试删除近 10 万个文件时也遇到了错误,类似于“rm:参数列表太长”。为了解决这个问题,我在 for 循环中运行 rm 并遍历文件,如下所示:

for letter in {a..z};do rm -f $letter*;done

如果您想在 shell 中模拟垃圾功能,您可以尝试如下操作:

#!/bin/bash
## pseudotrash
elsewhere=/media/$USER/some-external-drive/pseudo-trash
for file in "$@";do
  cp $file $elsewhere
  if [ "$?" -eq "0" ] ; then
    rm -f $file && echo "Backed up and deleted $file"||\
    (echo "Could not delete $file , aborting";exit 1)
  else
    echo "Could not copy $file,aborting" ;exit 1
  fi
done

然后像这样运行:

pseudotrash `ls`

或者

pseudotrash 'file1 file2 file3'

我希望这能回答您的问题并提供一些见解来帮助解决您的问题。

答案2

这是 Nautilus (包 gvfs) 中一个非常烦人的错误:

但就在三天前,这个错误已被修复,并且修复版本已添加到存储库中。

2017-08-28:此错误已在软件包 gvfs - 1.28.2-1ubuntu1~16.04.2 中修复

运行sudo apt-get update && sudo apt-get upgrade以更新到新版本。

相关内容