File Delete (extras)
Drupal Coreのファイル削除機能を拡張し、即時削除や使用状況チェックの上書きオプションなど、追加の安全機能を提供します。
file_delete
インストール
composer require 'drupal/file_delete:^3.0'
composer require 'drupal/file_delete:^2.0'
概要
File Deleteモジュールは、より堅牢で柔軟なファイル削除インターフェースを提供することで、Drupalの組み込みファイル削除機能を強化します。Drupal Core 10.1以降には基本的なファイル削除機能が含まれていますが、このモジュールはCoreのルートを乗っ取り、追加機能を備えた独自のフォームを提供します。
このモジュールはデフォルトでファイルのステータスを「Permanent(永続)」から「Temporary(一時)」に変更し、設定された一時ファイル保持期間に従ってDrupalのCronがクリーンアップできるようにします。さらに、即時削除のオプションや、管理目的で使用状況チェックを上書きする機能も提供します。
主要な安全機能として、他のエンティティで現在使用中のファイルの削除を防止する組み込みの保護機能があり、削除がブロックされた場合にはファイルの使用状況を確認するためのリンク付きのエラーメッセージを表示します。
Features
- 他のエンティティでアクティブに使用されているファイルの削除を防止する組み込みの安全機能
- DrupalのファイルクリーンアップCronプロセスをバイパスして、ファイルを即時削除するオプション
- 組み込みの使用状況アクセスチェックを上書きしてファイルを強制削除するオプション(上級ユーザー向け)
- Filesビューから一括ファイル削除を実行するためのバルクアクションプラグイン
- Coreのファイル管理ビュー(/admin/content/files)とのシームレスな統合
- 削除がブロックされた場合に、ファイル使用状況情報へのリンク付きの明確なエラーメッセージを表示
- 「file」モジュールの使用状況追跡からファイル参照を自動クリーンアップ
Use Cases
コンテンツ移行後の未使用ファイルのクリーンアップ
新しいDrupalサイトにコンテンツを移行した後、どのコンテンツからも参照されていない孤立したファイルが残ることがあります。Filesビュー(/admin/content/files)を使用して使用数がゼロのファイルを特定し、複数のファイルを選択して「ファイルを削除対象としてマーク」バルクアクションを使用し、次回のCron実行時に安全に削除されるようにキューに入れます。
機密ファイルの即時削除
機密情報を含むファイルが誤ってアップロードされた場合、「ファイルを即時削除」権限を持つ管理者はCronを待たずにサーバーから即座に削除できます。ファイルの削除フォームに移動し、「ファイルを即時削除しますか?」オプションを有効にしてください。
高トラフィックサイトでのディスク容量管理
ファイルアップロードの多いサイトでは、一時ファイルが蓄積されることがあります。「即時削除(使用状況チェック付き)」バルクアクションを使用して、アクティブに使用されているファイルの削除を防ぐ安全チェックを維持しながら、即座にディスク容量を解放できます。
Mediaエンティティとのファイル参照問題の解決
Drupal Mediaを使用する場合、ファイルは通常Mediaエンティティから参照されます。ファイルを削除する前に、まず関連するMediaエンティティを削除する必要があります。このモジュールは、どのモジュールがファイルを使用しているかを表示し、使用状況を確認するためのリンクを提供するため、ファイル削除前にMedia参照を特定して削除するのに役立ちます。
サイトメンテナンス中のファイル強制削除
サイトの大規模な再構築中、「使用状況を上書きしてファイルを削除」権限を持つ管理者は、使用状況追跡が使用中と示していてもファイルを強制削除できます。これは、使用状況追跡が正しくないことがわかっている場合や、結果に関係なく意図的にファイルを削除したい場合に便利です。
Tips
- コンテンツの破損を避けるため、削除前に常にファイルの使用状況を確認してください - このモジュールは使用中のファイルの削除をブロックすることで支援します
- 通常のクリーンアップタスクには「ファイルを削除対象としてマーク」を使用してください。Drupalの標準的なファイルライフサイクルに従います
- 「即時削除」は緊急の状況や、ディスク容量をすぐに解放する必要がある場合に使用してください
- Mediaエンティティを扱う場合は、まずMediaエンティティを削除してから、基になるファイルを削除することを忘れないでください
- 「使用状況を上書きしてファイルを削除」権限は控えめに付与してください。誤用するとメディアやリンクの破損を引き起こす可能性があります
- サイトのニーズに基づいて、ファイルシステム設定で適切な一時ファイル保持期間を設定してください
Technical Details
Admin Pages 1
/file/{file}/delete
特定のファイルを削除するための確認フォーム。ファイル名とURIを表示し、即時削除と強制削除のオプション(ユーザーが適切な権限を持っている場合)を提供し、強制削除が有効でない限り使用中のファイルの削除を防止します。
権限 2
Hooks 2
hook_entity_type_build
ファイルエンティティタイプの定義を変更し、デフォルトの削除フォームクラスをFileDeleteFormに置き換えます
hook_help
モジュールのヘルプページ用のヘルプテキストを提供します
Troubleshooting 4
Drupalは一時ファイルを設定可能な期間(デフォルト6時間)保持してから削除します。管理 > 環境設定 > メディア > ファイルシステムで保持設定を確認してください。または、この待機期間をバイパスするために「即時削除」オプションまたはアクションを使用してください。
このモジュールは、コンテンツの破損を避けるためにアクティブに使用されているファイルの削除を防止します。提供されたリンクをクリックしてファイルの使用状況を確認し、使用しているエンティティ(例:Mediaエンティティの削除やコンテンツの編集)から参照を削除してから、再度ファイルの削除を試みてください。管理者は「強制削除」を有効にしてこの保護を上書きすることもできます。
モジュールをインストールした後、Filesビューにフィールドを手動で追加する必要があります。管理 > サイト構築 > Views > Files > 編集に移動し、新しいフィールドを追加して「Link to delete File」を検索してください。
ビューにバルク操作フィールドが設定されていることを確認してください。モジュールはアクション設定を自動的にインストールしますが、ビューはバルク操作を表示するように設定されている必要があります。system.action.mark_file_for_deletionとsystem.action.immediate_deleteの設定が存在することを確認してください。
Security Notes 5
- 両方のモジュール固有の権限は「restrict access: true」でマークされており、信頼できる管理者にのみ付与すべきことを示しています
- 「使用状況を上書きしてファイルを削除」権限は安全チェックのバイパスを許可し、誤用するとコンテンツの破損を引き起こす可能性があります
- 「ファイルを即時削除」権限はDrupalのCronベースのクリーンアップをバイパスし、回復の猶予期間がありません
- ImmediateDeleteWithUsageChecksアクションでは直接データベース操作が使用されます - 適切なデータベースバックアップを維持してください
- ファイルの削除は永続的で元に戻せません - 重要なファイルにはバックアップ戦略の実装を検討してください