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