mikan's technical note

仕事&趣味で実験した小技の備忘録です(Linux,windows,DOS等)

MENU

【PSC】セーブデータバックアップ用シェル

※※※ 使用にあたっては利用者の自己責任でお願いします ※※※


PSC本体のセーブファイル(仮想メモリカード、再開ポイント)を、USBメモリへコピーするシェルです
※別途 gpghax が必要です

PSC電源オフ、電源ケーブルを抜いていることを確認
USBメモリを挿す
電源ケーブルを挿し、PSC電源オン
起動直後にブラックアウトします
バックアップには数分かかります
処理が終わると画面が表示されるので電源を切り電源ケーブルを抜いてUSBメモリを抜いてください

lolhack.sh

#!/bin/bash

### define
DB=regional_custom.db
BACKUPDIR=/media/backup
GAMEDIR=/media/games
LOGDIR=/media/log

### get log number
LOGCOUNT=1
LOGCOUNT_MAX=999
while [ $LOGCOUNT -le $LOGCOUNT_MAX ]
do
    LOGCOUNTNAME=$(printf %03d $LOGCOUNT)
    if [ -e $LOGDIR/${LOGCOUNTNAME}_before_ls.txt ]; then
        LOGCOUNT=`expr $LOGCOUNT + 1`
    else
        break
    fi
done
LOGCOUNTNAME=$(printf %03d $LOGCOUNT)

### UI Stop
sleep 8
echo "UI Stop" >> /media/messages.txt 
killall ui_menu
sleep 5

### log(before)
COUNT=1
COUNT_MAX=30
while [ $COUNT -le $COUNT_MAX ]
do
    if [ -e /gaadata/$COUNT ]; then
        echo "/gaadata/$COUNT" >> $LOGDIR/${LOGCOUNTNAME}_before_ls.txt 
        ls -l /gaadata/$COUNT >> $LOGDIR/${LOGCOUNTNAME}_before_ls.txt
    fi
    COUNT=`expr $COUNT + 1`
done
cd /
df -h > $LOGDIR/${LOGCOUNTNAME}_before_df.txt
sync

### create backup directory
if [ -e $BACKUPDIR/data/AppData/sony/pcsx ]; then
    :
else
    echo "create backup(save) directory" >> /media/messages.txt 
    mkdir $BACKUPDIR
    mkdir $BACKUPDIR/data
    mkdir $BACKUPDIR/data/AppData
    mkdir $BACKUPDIR/data/AppData/sony
    mkdir $BACKUPDIR/data/AppData/sony/pcsx
    sync
fi

### ========== BACKUP SAVEDATA (PSC -> USB) =================
echo "BACKUP SAVEDATA (PSC -> USB)" >> /media/messages.txt 
echo "BACKUP SAVEDATA 1 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/1 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 2 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/2 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 3 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/3 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 4 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/4 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 5 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/5 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 6 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/6 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 7 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/7 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 8 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/8 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 9 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/9 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 10 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/10 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 11 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/11 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 12 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/12 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 13 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/13 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 14 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/14 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 15 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/15 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 16 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/16 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 17 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/17 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 18 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/18 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 19 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/19 $BACKUPDIR/data//AppData/sony/pcsx/
echo "BACKUP SAVEDATA 20 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/20 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 21 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/21 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 22 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/22 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 23 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/23 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 24 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/24 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 25 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/25 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 26 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/26 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 27 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/27 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 28 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/28 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 29 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/29 $BACKUPDIR/data//AppData/sony/pcsx/
#echo "BACKUP SAVEDATA 30 (PSC -> USB)";cp -pr /data/AppData/sony/pcsx/30 $BACKUPDIR/data//AppData/sony/pcsx/
sync
### ============================================================

### log(after)
COUNT=1
COUNT_MAX=30
while [ $COUNT -le $COUNT_MAX ]
do
    if [ -e /gaadata/$COUNT ]; then
        echo "/gaadata/$COUNT" >> $LOGDIR/${LOGCOUNTNAME}_after_ls.txt 
        ls -l /gaadata/$COUNT >> $LOGDIR/${LOGCOUNTNAME}_after_ls.txt
    fi
    COUNT=`expr $COUNT + 1`
done
cd /
find . | sort > $LOGDIR/${LOGCOUNTNAME}_after_find.txt
df -h > $LOGDIR/${LOGCOUNTNAME}_after_df.txt
sync

#UI Start
echo "UI Start" >> /media/messages.txt 
cd /data/AppData/sony/pcsx
/usr/sony/bin/ui_menu --power-off-enable
echo "cp /data/sony/ui/error.log" >> /media/messages.txt 
cp -pr /data/sony/ui/error.log /media/error.log
sync


実行後、USBメモリ
/backup/data/AppData/sony/pcsx 配下にファイルがコピーされていることを確認してください

例)
/backup/data/AppData/sony/pcsx/4/.pcsx/memcards/card1.mcd
/backup/data/AppData/sony/pcsx/4/.pcsx/memcards/card2.mcd
/backup/data/AppData/sony/pcsx/4/.pcsx/screenshots/R4-SLPS01798.png.res
/backup/data/AppData/sony/pcsx/4/.pcsx/sstates/R4-SLPS01798.000.res
/backup/data/AppData/sony/pcsx/4/.pcsx/filename.txt.res

/messages.txt … 実行ログ