Plex基本配置文件
内含多处唯一设备id及账号信息,删除文件系统会自动生成,但是将变为重新安装状态。
- /plex/config/Library/Application Support/Plex Media Server/Preferences.xml
Plex媒体数据库
数据库文件位置:
- /plex/config/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db
以下为关键表结构
敏感信息,需要清空:
- accounts - 内含账户信息,需要清空表
- devices - 内含登录设备及id,需要清空表
- external_metadata_sources - 内含账户关联的好友分享服务器及uri地址,需要清空表
- play_queues - 内含播放媒体的客户端id记录,需要清空表
媒体路径信息,需要替换路径:
- media_parts - 内含媒体详细文件信息,其中file列包含文件路径,可用于批量替换
- media_streams - 内含媒体字幕信息,其中uri列包含文件路径,可用于批量替换
- section_locations - 内含媒体库路径,其中root_path列包含文件路径,可用于批量替换
无需改动:
- library_sections - 内含plex媒体库的名称等信息
- media_items - 内含媒体封面及缩略图位置信息,user_thumb_url及user_art_url存放路径类似media://0/xoxixo.bundle/Cont...
媒体附加信息
建议遍历此目录所有.xml文件,替换包含路径的文字内容
- /plex/config/Library/Application Support/Plex Media Server/Media/localhost/*.xml
例:
/Library/Application Support/Plex Media Server/Media/localhost/0/0cd1d3b24102303ab2b954d7a37e8f7f7ebf8b7.bundle/Contents/Plex Movie/Subtitles.xml
内含字幕信息,可批量替换。字幕文件路径存储在:Subtitles/Language/Subtitle/@file字段下。
媒体库替换步骤
- 删除 /plex/config/Library/Application Support/Plex Media Server/Preferences.xml
- 批量替换数据库删除敏感信息 ,替换媒体路径信息 /plex/config/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db
- 批量查找此目录下的xml文件 /plex/config/Library/Application Support/Plex Media Server/Media/localhost/*.xml,替换媒体路径信息
替换删除并替换数据库中的媒体库路径
使用此命令打开sql数据库,输入以下sql命令
sqlite3 "/plex/config/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db"
# 数据库脱敏 delete from accounts; delete from devices; delete from external_metadata_sources; delete from play_queues; # 批量替换表中文件目录路径字符 update media_parts set file = replace(file,'/home','/newPath'); update media_streams set uri = replace(uri,'/home','/newPath'); update section_locations set root_path = replace(root_path,'/home','/newPath');
手动替换媒体附加信息的路径(有问题,弃用)
注意将 /PATH
替换为新的媒体挂载目录(正则中路径的/字符需要改为\/进行字符转义),将 /plex/config
替换为pelx媒体库的路径。
#sed -i "s/\/home/\/PATH/g" `grep abc -rl "/root/plex/config/Library/Application Support/Plex Media Server/Media/localhost/0"` # 有问题,无法查找到文件 #find "/root/plex/config/Library/Application Support/Plex Media Server/Media/localhost/0" -name '*xml' | xargs -i echo mv \"{}\" \"{}\" | sed 's/\/home/\/PATH/g' | sh
脚本(sql执行时有问题,弃用)
deal_plex_data.sh
#!/bin/bash # Plex 应用数据的 config 目录 #PLEX_DIR=/plex/config PLEX_DIR=/plex/config # 当前默认的媒体库目录 MEIDA_PATH_DEF=/home # 被替换的媒体库目录 MEIDA_PATH=/home # 默认是否替换数据路径 place_path=n read -p "# 是否对数据库中媒体路径进行替换? (y/N):" place_path if [ "$place_path" = "y" ] || [ "$place_path" = "Y" ]; then read -p "# 当前根目录为 '$MEIDA_PATH' , 请输入新的根目录路径:" MEIDA_PATH echo "# Plex 数据库中媒体根目录将被替换为 '${MEIDA_PATH}'" fi echo '# 删除配置文件 Preferences.xml' rm -f "${PLEX_DIR}/Library/Application Support/Plex Media Server/Preferences.xml" echo '# 处理媒体库脱敏及路径替换' sudo apt-get install sqlite3 -y SQL_PATH="${PLEX_DIR}/Library/Application Support/Plex Media Server/Plug-in Support/Databases/com.plexapp.plugins.library.db" # 删除表中所有数据 db.execSQL("delete from table") sqlite3 ${SQL_PATH} "delete from accounts; delete from devices; delete from external_metadata_sources; delete from play_queues;" # 批量替换表中文件目录路径字符 if [ "$place_path" = "y" ] || [ "$place_path" = "Y" ]; then update media_parts set file = replace(file,"'${MEIDA_PATH_DEF}'","'${MEIDA_PATH}'"); update media_streams set uri = replace(uri,"'${MEIDA_PATH_DEF}'","'${MEIDA_PATH}'"); update section_locations set root_path = replace(root_path,"'${MEIDA_PATH_DEF}'","'${MEIDA_PATH}'"); fi .quit echo '# 数据库处理完毕' # 批量替换媒体附加信息中的文件目录路径字符 echo '# 媒体附加信息替换' if [ "$place_path" = "y" ] || [ "$place_path" = "Y" ]; then echo '# 您还需要手动处理媒体附加信息中的路径替换' fi