ls -lt
这是我从当前目录中获得的完整文件名。
EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz
文件名也由日期组成。在上面的文件中,日期是20120811
。
因此,我尝试删除所有以 开头EXPORT_v1x0
且日期早于 的文件20120825
。
我正在使用命令行中的以下脚本来删除文件
find . -name "EXPORT_v1x0*" | awk -F'_' '$3<20120825' | xargs rm
但是每当我使用上述命令删除文件时,我总是会出现以下异常。
rm: ./EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz not removed: Disc quota exceeded
有人能告诉我这个异常是什么意思吗?以及如何解决这个问题?
我在跑步SunOS
。
bash-3.00$ uname -a
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc
答案1
您需要执行类似cat /dev/null > file
(或echo > file
) 的操作来回到配额以下,以便您可以再次使用 rm。
答案2
手动删除您找到的最小的文件,直到低于配额,然后您将能够使用标准方法删除。
我不知道为什么@Volodymyr Savchenko 的答案被否决了。实际上这也是对我唯一有用的技巧。
我在 HPC 工作并且我的配额用完了。
-尝试几乎任何命令都要花费很长时间。
-rsync
远程使用 --remove-source-files 不起作用:
rsync -avz --remove-source-files -e "ssh -p ####" usr@host:path/file.dat ./
receiving file list ... done
rsync: sender failed to remove file.dat: Disk quota exceeded (122)
-rm 大多数文件不起作用:
[usr@server ~]$ rm path/file.dat
rm: cannot remove 'path/file.dat': Disk quota exceeded
-正在做
cat /dev/null path/file
显然可以工作,但 rm 却不行(但出现了超出配额的错误消息)(我不明白为什么)。
尽管如此,删除那些我仅“触碰过”的小文件(即,大小非常小的空文件)是可行的,并且让我有机会低于配额并能够正常删除文件。
答案3
我猜你没有权限删除该文件,或者它是只读的。尝试 rm -f。配额消息来自尝试写入磁盘的某些内容。
答案4
我遇到了同样的问题,而您列出的通常建议的解决方案均不起作用。
但我意识到可以删除小于 1kb 的最小文件。我只需找到足够多的小文件,就可以再次使用 rm 清理大文件。
编辑:我想澄清一下,类似的东西cat /dev/null > some-file
对我来说不起作用。这是我提到的建议的解决方案之一。