リモートシステムからクォータのあるディレクトリを削除する方法は?

リモートシステムからクォータのあるディレクトリを削除する方法は?

クォータに達した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のクォータは他のほとんどのファイルシステムとは異なります。これは非常に重要なスケーラビリティと可用性の問題です)。

関連情報