메뉴 www.fafan.kr
파판 >> 질문/답변
  • 로그인
  • 데이터베이스 재구축후 커펌플스4의 게임목록이 다 사라졌는데요
    작성자 : 석1 | 조회수 : 5849 (2020-09-15 오전 10:11:07)
    - 첨부파일
      1[22].jpg

    원본사이즈 : 1024 X 553

    안녕하십니까 커펌플스4 유저입니다

    지금 보시는 분들은 꼭! 데이터베이스 재구축 메세지가 뜨면 '아니오'를 선택하시기 바랍니다

    8TB 외장하드에 게임들이 있는데 게임 아이콘들이 다 사라져버렸어요

    그래서 구글 네이버 유명한 포럼이나 사이트에 가서 다 뒤져봤지만 뚜렷한 해결책을 찾지 못했습니다

    아래는 그 과정중 일부입니다


    저는 6.72 커펌을 쓰고 있고요 8TB외장하드에 550개정도 되는 게임이 설치되어있어요

    사실 커펌플스4가 exploit + HEN을 먹이니까 자꾸 파워가 꺼지는 현상이 있어서

    엄청 많이 비정상 종료가 되어서 약간 데이타 corruption이 있었던 모양이었는데

    어느날 디스크 복구가 진행되다가 데이터베이스를 재구축하겠냐고 묻는거에요

    별거 아닌줄알고 그냥 '예'를 눌렀는데 게임목록이 다 사라진거에요

    외장하드를 보니까 데이터는 다 살아있는거같더라고요

    근데 게임 아이콘들이 다 사라져서 인터넷을 다 뒤져봤는데 결국 여기서 한계가 왔어요

    아래는 python으로 복구를 시도한 결과입니다

    ------------------------------


    ............


    "'CUSA01750'", "'CUSA00057'", "'CUSA03009'", "'CUSA03030'", "'CUSA05630'", "'CUSA01670'", "'CUSA02311'", "'CUSA07111'", "'CUSA01961'", "'CUSA00315'", "'CUSA00909'", "'CUSA00335'", "'CUSA03050'", "'CUSA01262'", "'CUSA04107'", "'CUSA02952'"]


    Processing table: tbl_appbrowse_0394837706


    Traceback (most recent call last):


      File "fix_db.py", line 75, in


        cursor.execute("SELECT T.titleid FROM (%s) T WHERE T.titleid NOT IN (SELECT titleid FROM %s);" % (files_joined, tbl[0]))


    sqlite3.OperationalError: too many terms in compound SELECT


    --------------------------------

    유튜브에 해결책이 있긴했어요

    https://youtu.be/r_zy7anO16g

    근데 내장하드에만 해당되는 내용이더군요

    제 생각에는 이 프로세스의 한계가 500개인데 두세번에 걸쳐 나눠서 해야될거같아요

    프로세스를 나눠서 하는 방법이 있을까요?






    글쓰기 | 수정 | 삭제 | 목록   

    Lv.4 de2ri (2020-09-15 16:52:45)
    fix_db.py 파일안에 경로중에 게임 있는 부분 찾는 경로를 외장하드쪽 경로로 수정하면 될 것 같기도 하지만 DB작업이라 위험부담이... ^^
    근데 500개 제한이 있다고 생각하신 이유가 있으신지요?
    Lv.2 석1 (2020-09-15 18:13:52)
    구글검색해보니까 500제한이 있다 그런 내용이 있더라고요. 암튼 여러분은 앞으로 플스4에 FTP로 들어가서 /system_data/priv/mms/ 경로에 있는 app.db, addcont.db를 복사해다가 무조건 다른곳에 저장해두십시오. 일이 벌어진다음에 복사하는건 소용없습니다 일이 나기전에 백업해둬야돼요
    Lv.4 de2ri (2020-09-16 01:30:58)
    아~ 검색한 글들중에 그런 내용이 있었나 보군요.
    위에 유튜브 영상에 달린 링크에서 파일을 받아서 조금 봤거든요.
    제가 SQL은 그럭저럭 알지만 파이썬은 급하게 필요했던 부분만 조금 공부했던게 다라서 대충 짐작 수준으로 분석을 해봤는데 500개 제한이나 그런 코드는 안보이는거 같아서 궁금해서 말씀드린거 였습니다.
    저도 보유한 게임이 석1님처럼 많았다면 필히 백업을 해둘텐데 몇개 안되서... ㅎㅎ
    Lv.2 석1 (2020-09-15 18:18:25)
    아참 더 해드릴말이 있는데 참고로 제가해보진 않고 PSXHAX(?) 거기나와있는 조치대로 말씀드린겁니다 그래서 일이 벌어지고 나면 백업해뒀던 app.db, addcont.db를 FTP로 연결해서 해당경로에 덮어씌워주면 됩니다. 제가 그래서 커펌플스4를 다시 AS보낼건데 나중에 데이터베이스 재구축을 실수로 누르게 되면 제가 쓴 내용대로 해보고 후기도 남겨보겠습니다 de2ri님 댓글 감사합니다
    Lv.2 석1 (2020-09-15 18:25:22)
    이하는 원문입니다
    (https://www.psxhax.com/threads/ps4-database-backup-to-prevent-accidentally-rebuild-database.3803/)
    to backup database:

    run the hen payload and then run the ftp payload.

    ftp into /system_data/priv/mms/
    and copy app.db to your computer.

    you can take addcont.db if you like that holds stuff like extra seasons of games.

    Note: when you install new games you will need to backup app.db again so it includes those new games too.


    to restore broken database:

    run the hen payload and then run the ftp payload.

    ftp into /system_data/priv/mms/

    upload your saved app.db from your computer to that directory overwriting the app.db inside the ps4

    power off the ps4 as you normally would then boot it back up and see if it has changed.

    this worked for me when I was playing around with that run games from hdd idea, my database rebuilt and I lost all the tiles for 40+ games but I had saved a copy of my app.db and when I tried to put it back with just the ftp payload running it would rebuild again but when I used hen payload and the ftp payload it restored all my tiles and still works now.

    if someone wanted to make a payload to back it up they could do something like this

    Code:
    #include "ps4.h"

    int _main(void) {
    initKernel();
    initLibc();
    copyFile("/system_data/priv/mms/app.db", "/system_data/priv/mms/app.backup");
    return 0;
    }

    void copyFile(char *sourcefile, char* destfile)
    {
    FILE *src = fopen(sourcefile, "r");
    FILE *out = fopen(destfile,"w");
    char buffer[60480];
    size_t bytes;
    while (0 < (bytes = fread(buffer, 1, sizeof(buffer), src)))
    fwrite(buffer, 1, bytes, out);
    fclose(src);
    fclose(out);
    }



    도배방지 : 0

    글쓰기 | 수정 | 삭제 | 목록   

     

    12345

    Copyright ⓒ FINALFANTASIA.COM All rights reserved.