找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 44|回复: 0

给飞牛影音的媒体库实现一个”最近添加“的文件夹

[复制链接]

1

主题

10

回帖

146

积分

管理员

积分
146
发表于 2025-10-14 23:33:56 | 显示全部楼层 |阅读模式
因为装的是大姐姐,所以效果不便展示过多。简单说下原理:
# 原本的媒体库结构 ,媒体库文件以media为例media/**── movies/**   **── 2023/**   **   **── MovieA.mp4**   **── MovieA.mp4**── tv_shows/    **── MovieA.mp4# 脚本会在media平级生成一个latest文件夹,将media中最近7天修改的文件生成软链接放在latest中latest/**── movies#2023#MovieA.mp4 → ../../movies/2023/MovieA.mp4**── movies#MovieA.mp4 → ../../movies/MovieA.mp4**── tv_shows#MovieA.mp4 → ../../tv_shows/MovieA.mp4# 脚本会在media平级生成一个archive文件夹,将latest中超过7天修改的软链接放在`archive/年-月`中archive/**── 2023-10/    **── movies#2023#MovieA.mp4    **── movies#MovieA.mp4
安装教程:
1.脚本:media_sync.sh
#!/bin/bash# 配置区 ==============================================MEDIA_PARENT="/vol1/1000/影视1"MEDIA_LIBRARY="$MEDIA_PARENT/media"    # 影音库根目录(确保无末尾斜杠)LATEST_DIR="$MEDIA_PARENT/latest"     # 最新文件链接目录(确保无末尾斜杠)ARCHIVE_LIBRARY="$MEDIA_PARENT/archive"LOG_DIR="$MEDIA_PARENT/.log"LOG_FILE="$LOG_DIR/media_library.log"  # 日志文件路径DAYS=7                                # 追踪最近几天文件# =====================================================# 创建必要目录mkdir -p "$LATEST_DIR"mkdir -p "$LOG_DIR"mkdir -p "$ARCHIVE_LIBRARY"# 函数:记录日志log() {    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"}# 步骤1:清理旧的latest链接log "开始清理旧链接..."find "$LATEST_DIR" -type l -delete 2>/dev/null# 步骤2:生成最新链接(处理重名)log "正在生成最新链接(防重名处理)..."find "$MEDIA_LIBRARY" \    -type f \    -mtime -$DAYS \    -not -path "$LATEST_DIR/*" \    -print0 | while IFS= read -r -d '' file; do    # 计算相对路径(相对于媒体库根目录)    relative_path="${file#$MEDIA_LIBRARY/}"    # 替换路径中的"/"为"#",避免重名冲突    link_name="${relative_path//\//#}"    # 创建软链接(强制覆盖已有链接)    ln -sf "$file" "$LATEST_DIR/$link_name"    log "创建链接: $link_name → $file"done# 步骤3:归档过期文件(按年月分类)log "正在归档旧文件..."find "$LATEST_DIR" -type l -print0 | while IFS= read -r -d '' link; do    target=$(readlink -f "$link")      # 检查目标文件是否已过期    if [ $(date -d "now - $DAYS days" +%s) -ge $(stat -c %Y "$target") ]; then        # 获取目标文件的修改时间年月        year_month=$(date -d "@$(stat -c %Y "$target")" "+%Y-%m")        archive_dir="$ARCHIVE_LIBRARY/$year_month"          # 创建归档目录并移动链接(保留原名)        mkdir -p "$archive_dir"        mv "$link" "$archive_dir/"        log "已归档: $link → $archive_dir"    fidonelog "操作完成!"
2. 赋予权限,测试运行:
chmod +x media_sync.sh./media_sync.sh# 如果运行报错,需要检查是否是字符集问题,
3. 为媒体库添加latest和achive目录
4. 配置定时任务
# 编辑当前用户的crontabcrontab -e# 添加以下行(路径替换为实际脚本位置)0 */12 * * * /<脚本目录>/media_sync.sh >/dev/null 2>&1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站由纳斯五零(NAS50.CN),版权所有,保留部分权利。豫ICP备2023035803号-1

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-10-24 06:38 , Processed in 0.096992 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表