플렉스미디어서버(PlexMediaServer)에서 시청 기록 및 평점을 백업, 복원하는 방법

컴퓨터, 소프트웨어 2024년 11월 9일

플렉스(Plex)의 시청 기록, 평점

플렉스서버에서는 사용자의 시청기록과 평점을 기록합니다. 흔하지 않지만 만약 서버를 재구성하거나 다른 서버로 옮길 때 시청기록, 평점만 따로 백업, 복원해야 할 때가 있습니다.

Plex의 기본 기능에도 시청기록 동기화 기능이 있지만 이는 Plex의 에이전트를 사용할 때만 지원됩니다.

그래서 시청기록, 평점을 따로 백업, 복원하려면 DB에서 해당 부분을 추출해야 합니다.

플렉스 공식홈페이지 팁

이와 관련된 팁으로 공식 홈페이지에 나와있는 내용이 있습니다.

Move Viewstate/Ratings from One Install to Another
The watched/unwatched, view progress, and ratings are stored in an install-independent fashion that makes them easy to move between installations…

하지만 위의 팁은 다음과 같은 오류가 날 때가 있습니다. 새 DB에 시청기록이 존재하지 않을 때는 괜찮지만 기록이 존재한다면 덮어씌우지 못해서 오류가 발생합니다.

Error: near line 1535: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1536: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1537: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1538: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1539: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1540: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1541: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1542: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1543: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1544: UNIQUE constraint failed: metadata_item_settings.id
Error: near line 1545: UNIQUE constraint failed: metadata_item_settings.id

Plex 시청기록 복원시 오류

위의 팁을 보완해서 기존 데이터를 덮어씌우면서 복원하는 법을 설명합니다.

플렉스 시청기록/평점 백업 방법

이 팁은 우분투를 기준으로 설명합니다. 윈도우도 sqlite3.exe파일을 통해 같은 방식으로 가능할 거라 생각합니다.(윈도우는 클라이언트 접속제한이 있어서 플렉스 서버로 안써봤습니다.)

sqlite3 설치

플렉스의 DB는 sqlite를 사용하기 때문에 수정하려면 sqlite 앱이 필요합니다. 없다면 다음 명령으로 설치해 줍니다.

sudo apt install sqlite3

플렉스 DB폴더로 이동

다음으로 플렉스의 DB가 있는 폴더로 이동합니다.

cd "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases"

plexmediaserver 서비스 중지

systemctl stop plexmediaserver

plexmediaserver DB백업

ls -ahl명령어로 DB폴더의 파일들을 살펴봅니다. 저의 경우는 다음과 같이 나옵니다.

plexmediaserver의 DB폴더

.db-shm, .db-wal파일은 DB에 실시간 접속할 때 생성되는 파일이니 무시해도 되고 com.plexapp.plugins.library.db파일을 백업해 둡니다.

cp com.plexapp.plugins.library.db com.plexapp.plugins.library.backup.db

나중에 문제가 생기면 com.plexapp.plugins.library.backup.db파일의 이름을 com.plexapp.plugins.library.db로 바꾸고 플렉스미디어서버를 다시 시작하면 이전으로 돌아갑니다.

플렉스 시청기록/평점 백업 파일 작성

다음 명령어를 실행해서 Plexmediaserver의 시청기록/평점 데이터를 추출해서 settings.sql이라는 파일을 새로 작성합니다.

echo ".dump metadata_item_settings" | sqlite3 com.plexapp.plugins.library.db | grep -v TABLE | grep -v INDEX > settings.sql

plexmediaserver 시청기록 백업파일 생성

백업 파일 수정

생성된 settings.sql파일을 그대로 사용하면 덮어씌우기 불가 오류가 나기 때문에 파일을 약간 수정합니다. 수정된 settings_replace.sql파일이 생성됩니다.

sed 's/^INSERT INTO/INSERT OR REPLACE INTO/' settings.sql > settings_replace.sql

settings.sql 파일 수정해서 settings_replace.sql파일 생성

이렇게 하면 settings_replace.sql파일에 시청기록/평점 데이터를 보관할 수 있습니다.

플렉스 시청기록/평점 복원 방법

다음은 플렉스의 시청기록/평점 복원방법입니다.

플렉스 DB폴더로 이동

다음으로 플렉스의 DB가 있는 폴더로 이동합니다.

cd "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-in Support/Databases"

plexmediaserver 서비스 중지

systemctl stop plexmediaserver

settings.sql 파일을 DB에 복사

다음 명령어를 실행하면 settings_replace.sql파일의 내용이 DB파일인 com.plexapp.plugins.library.db파일에 덮어씌워집니다.

cat settings_replace.sql | sqlite3 com.plexapp.plugins.library.db

settings.sql파일 내용을 com.plexapp.plugins.library.db에 덮어씌우기

plexmediaserver 서비스 재시작

다음 명령어를 통해 plexmediaserver를 재시작하면 시청기록/평점 데이터가 복원된 채로 플렉스가 시작됩니다.

systemctl start plexmediaserver

태그

BoniK

협업, 의뢰, 레슨 등 문의 : mail@bonik.me, open.kakao.com/me/bonik