![如何删除远程系统上具有配额的目录?](https://linux22.com/image/125703/%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%E8%BF%9C%E7%A8%8B%E7%B3%BB%E7%BB%9F%E4%B8%8A%E5%85%B7%E6%9C%89%E9%85%8D%E9%A2%9D%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我有一个 rsync.net 帐户已达到配额,我正在尝试删除 (rm -rf) 目录以清理空间。然而,我能想到尝试的所有删除命令(rm、truncate、find -delete 等)都会给我一个与“超出磁盘配额”相关的错误。
我发现的唯一方法是 scp 一个空文件并覆盖目录中的每个文件。
有没有更好的方法来解决这个问题?理想情况下是单衬吗?
答案1
你尝试过什么吗fallocate
?
以下将具有与 相同的最终效果truncate
,但使用不同的调用序列,并且仅适用于 ext4 和 XFS,其文件是文件系统块大小的倍数:
fallocate -c 0 -l `wc -c <file>` <file>
这将使该文件成为与原始文件具有相同(表观)长度的稀疏文件(但仅适用于 ext4、XFS、BTRFS 和 tmpfs):
fallocate -p 0 -l `wc -c <file>` <file>
除此之外,该unlink
命令可能会起作用(但我怀疑它正如您所评论的那样find -delete
不起作用。
但根据你所说的,在我看来,他们正在使用 BTRFS 进行后端存储,如果他们需要使用配额,他们可能不应该这样做(BTRFS 上的配额与大多数其他文件系统上的配额工作方式不同,并且现在有一些非常重要的可扩展性和可用性问题)。