作者在 2025-12-19 19:55:55 发布以下内容
1、打开phpmyadmin,进入数据库bcbbs,点击“SQL”,运行如下语句:
2、在显示结果的最下面点击“导出”,格式选择最下面的“Texy! text”,点击“执行”
3、把下载到的“cdb_attachments.txt”只保留文件名列表部分,把“|”替换为空。
4、把文件上传到bccnsoft的“/mnt/var/remotefiles/bbs_bccn_net.bccnsoft.com_data/006/”,登陆服务器进入这个目录。
5、打开ipython,逐步运行如下命令:
SELECT a.attachment FROM `cdb_attachments` a left join cdb_posts p on a.pid=p.pid where p.invisible=0
2、在显示结果的最下面点击“导出”,格式选择最下面的“Texy! text”,点击“执行”
3、把下载到的“cdb_attachments.txt”只保留文件名列表部分,把“|”替换为空。
4、把文件上传到bccnsoft的“/mnt/var/remotefiles/bbs_bccn_net.bccnsoft.com_data/006/”,登陆服务器进入这个目录。
5、打开ipython,逐步运行如下命令:
import os
import re
import glob
# 获取数据库中的文件列表
with open('cdb_attachments.txt', 'r', encoding='utf-8') as file:
al = file.readlines()
al = [i.removeprefix("|").removesuffix("\n") for i in al]
# 获取当前文件夹下的文件列表
fl = glob.glob('./**/*.*', recursive=True)
fl = [i.removeprefix("./") for i in fl]
fl = [i for i in fl if not re.search("\.\w{2,5}\.webp", i)]
fl_big = [i for i in fl if '.thumb' not in i]
fl_thumb = [i for i in fl if '.thumb' in i]
# 删除数据库中不存在的文件
set_big_del = set(fl_big) - set(al)
for f in set_big_del:
if os.path.isfile(f):
print("删除:" + f)
os.remove(f)
else:
print("文件不存在:" + f)
# 清理主图已不存在的缩略图
set_big_remain = set(fl_big) - set_big_del
thumb_del = [i for i in fl_thumb if i.split('.thumb')[0] not in set_big_remain]
for f in thumb_del:
if os.path.isfile(f):
print("删除:" + f)
os.remove(f)
else:
print("文件不存在:" + f)
找出源文件已不在的webp文件find . -type f \
-regextype posix-extended \
-regex '.*\.[[:alnum:]]{2,5}\.webp$' \
-print0 | while IFS= read -r -d '' webp; do
src="${webp%.webp}"
if [ ! -f "$src" ]; then
echo "$webp"
fi
done

