使わなくなったコースとその中にあるコンテンツファイルを削除します。
この記述は作成途中なので、誤った情報を含んでいる可能性があります。安易に実行しないでください。

1.Moodleサイトに載せた全てのユーザーファイルをリストアップするSQL文 (sql_for_get_filelisting_per_course.sql)

SELECT "CourseID", "CourseFullName", "CourseShortName", "ModuleName", "FileName", "FileSize", "FileSize(MB)", "DateUploaded", "FilePath"
UNION
SELECT c.id AS CourseID, c.fullname AS CourseFullName, c.shortname AS CourseShortName, m.name AS ModuleNAme, f.filename AS FileName, f.filesize AS FileSize, CONCAT(f.filesize / (1024 * 1024) , 'MB') AS FileSize, FROM_UNIXTIME(f.timecreated, "%Y/%m/%d %H:%i:%s") AS DateUploaed, CONCAT('/filedir/', SUBSTRING(f.contenthash, 1, 2), '/', SUBSTRING(f.contenthash, 3, 2), '/', f.contenthash) AS FilePath

FROM mdl_files f
JOIN mdl_context cx ON f.contextid = cx.id
JOIN mdl_course_modules cm ON cx.instanceid=cm.id
JOIN mdl_course c ON cm.course=c.id
JOIN mdl_modules m ON cm.module=m.id
WHERE f.filename <> '.'
AND f.filename NOT LIKE '%backup%'
INTO OUTFILE '/tmp/_moodle_filelisting.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

2.古い授業コースの削除作業の前に現在のユーザーファイルリストを取得
# mysql -u root -p<パスワード> moosle <  sql_for_get_filelisting_per_course.sql

# mv  /tmp/_moodle_filelisting.csv  _moodle_filelisting_before.csv

# vi _moodle_filelisting_before.csv
"CourseID","CourseFullName","CourseShortName","ModuleName","FileName","FileSize","FileSize(MB)","DateUploaded","FilePath"
"2","2022年テストコース01","2022TEST01","resource","CentOS-5.11-x86_64-bin-DVD-1of2.iso","4674615296","4458.0605MB","2022/11/11 13:45:47","/filedir/eb/d7/ebd77f2fdfac8da04f31c508905cf52aa62937cc"
"2","2022年テストコース01","2022TEST01","assign","CentOS-6.10-x86_64-bin-DVD1.iso","3991928832","3807.0000MB","2022/11/11 13:54:41","/filedir/48/90/48908ca17bc4ba2fb8e365c9fe7648eb6cd6bd67"
"2","2022年テストコース01","2022TEST01","assign","lpls174.exe","2542169","2.4244MB","2022/11/11 14:32:06","/filedir/3a/39/3a397da5122f6ef38ea5c767aec5b45e8c2781e9"
<以下省略>

作業前には2021年カテゴリと2022年カテゴリがあって、合計4個のコースがあります。
そのうちの古い2021年カテゴリ下の2個のコースを削除します。














3.コースの削除作業
ダッシュボード-サイト管理-コース バックアップ-自動バックアップ設定 ページで自動バックアップ設定が無効になっていることを確認します








ダッシュボード-サイト管理-プラグイン-管理ツール-ごみ箱 ページでコースごみ箱とカテゴリごみ箱が無効になっていることを確認します。

ダッシュボード-サイト管理-コース-コースおよびカテゴリを管理する-2021年度 ページで2個のコースをごみ箱に入れて削除します。

























4.コース削除後にmoodledataディレクトリ下がどうなっているか確認します。
# pwd
/data/moodledata

# du -h
31G  ./filedir    ユーザーデータファイルが搭載されています
2.6M ./trashdir   ごみ箱には大きいファイルは入っていません
31G    合計31GBで容量が減っていません。

5.最初に取得しておいたユーザーファイルリストを使って削除したコース内のファイルを削除します。
# vi _moodle_filelisting_before.csv
"CourseID","CourseFullName","CourseShortName","ModuleName","FileName","FileSize","FileSize(MB)","DateUploaded","FilePath"
"2","2022年テストコース01","2022TEST01","resource","CentOS-5.11-x86_64-bin-DVD-1of2.iso","4674615296","4458.0605MB","2022/11/11 13:45:47","/filedir/eb/d7/ebd77f2fdfac8da04f31c508905cf52aa62937cc"
"2","2022年テストコース01","2022TEST01","assign","CentOS-6.10-x86_64-bin-DVD1.iso","3991928832","3807.0000MB","2022/11/11 13:54:41","/filedir/48/90/48908ca17bc4ba2fb8e365c9fe7648eb6cd6bd67"
"2","2022年テストコース01","2022TEST01","assign","lpls174.exe","2542169","2.4244MB","2022/11/11 14:32:06","/filedir/3a/39/3a397da5122f6ef38ea5c767aec5b45e8c2781e9"
<途中省略>
"4","2021年テストコース01","2021TEST01","forum","DashboardSetup.exe","4181200","3.9875MB","2022/11/11 14:29:39","/filedir/38/b8/38b825cbe14df83e7890092227696f7d406e1267"
"4","2021年テストコース01","2021TEST01","forum","gimp-2.10.24-setup-1.exe","237302792","226.3096MB","2022/11/11 14:30:09","/filedir/a5/0b/a50bc3c6526bc01fd9c44fec8dbc3d322a7c213d"
"4","2021年テストコース01","2021TEST01","forum","lpls174.exe","2542169","2.4244MB","2022/11/11 14:32:06","/filedir/3a/39/3a397da5122f6ef38ea5c767aec5b45e8c2781e9"
<以下省略>

上記のリストから2021年のファイルを削除するためのスクリプトを作ります。
WindowsPCにダウンロードして、Excelに読み込んで編集すると便利です。
# vi _moodle_filelisting_for_delete.sh
#!/bin/sh
rm /data/moodledata/filedir/eb/d7/ebd77f2fdfac8da04f31c508905cf52aa62937cc
rm /data/moodledata/filedir/48/90/48908ca17bc4ba2fb8e365c9fe7648eb6cd6bd67
rm /data/moodledata/filedir/3a/39/3a397da5122f6ef38ea5c767aec5b45e8c2781e9
rm /data/moodledata/filedir/53/c7/53c7c32068cd57564ed8aff19e999ebcd5664b4c
rm /data/moodledata/filedir/c4/2e/c42e5ee16cc3041374d2926d22a73a3a5da8bee8
rm /data/moodledata/filedir/50/d6/50d65179c7d75eab96d348f59ed43ca6eceb5590
<途中省略>
exit 0

削除予定のファイルの情報を確認します。
# ls -lh /data/moodledata/filedir/eb/d7/ebd77f2fdfac8da04f31c508905cf52aa62937cc
-rw-rw-rw- 1 apache apache 4.4G 11月 11 13:47 /data/moodledata/filedir/eb/d7/ebd77f2fdfac8da04f31c508905cf52aa62937cc
4,4GBのファイルがあることが確認できました。(テスト用に大きなファイルをのせてあります)

削除スクリプトを走らせます。
# chmod 755 _moodle_filelisting_for_delete.sh
# sh ./_moodle_filelisting_for_delete.sh

削除後の様子を調べます。
# cd /data/moodledata
# du -h

デフォルト状態では/data/moodledata/trashdir ディレクトリ下には何もありません。



もしもtrashdir下に削除済みファイルが残っている場合は強制的に削除します。
# vi cleanup
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\logstore_standard\task\cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\backup_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\cache_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\file_temp_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\file_trash_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\session_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core_files\task\conversion_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\tool_recyclebin\task\cleanup_category_bin";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\tool_recyclebin\task\cleanup_course_bin";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\messaging_cleanup_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\delete_incomplete_users_task";
php /data/html/moodle/admin/tool/task/cli/schedule_task.php --execute="\core\task\delete_unconfirmed_users_task";

上記のclearupファイルを使って以下のようにファイル削除します。
# ./cleanup




最終更新日時: 2023年 10月 13日(金曜日) 10:52