Jest jakiś prosty skrypt pod Linuksa (Raspberry), który pakował by do archiwum (tar.bz2 czy tam rar) wszystkie pliki o rozszerzeniu .srm z kilku katalogów z danej lokalizacji, ale z zachowaniem nazw tych katalogów i ich lokalizacji. Np.
A/katalog b/ xxx.srm
A/katalog c/xxy.srm
Żeby po prostu nie wrzucał tych plików .srm do jednego głównego katalogu, a do katalogów o tej samej nazwie jak jest w oryginale. W katalogach są inne pliki i ich ma nie backupować.
Następnie wysyłałby to archiwum na serwer FTP (logowanie hasło + login).
Żeby skrypt uruchamiał co każdy restart/uruchomienie raspberry i nadpisywał na danym serwerze FTP poprzedni backup lub kasował starsze wersje backupu.
Do spakowania użyj find twój_katalog -name "*.srm" -o -name "*.html" | tar -cf nazwa_archiwum -T -
Zamiast przesyłania po FTP lepiej prześlij przy pomocy scp z lokalizacji lokalnej na serwer
+ Nadpisywanie bezpośrednio nie jest dobre, bo co jeżeli przerwie się internet? Wtedy stracisz wszystkie kopie. Dodaj w nazwie np. datę dla backupu i po przesłaniu możesz sprawdzić czy jest więcej niż 3 pliki w katalogu backupu, jeżeli tak to usuń najstarszy / pozostaw 2 najmłodsze
Mam po prostu wykupiony hosting www i oddzielne konto FTP na nim pod taki cel. Może trzymać dwie ostatnie kopie. To ma być bardziej na wypadek jakby karta microSD umarła na amen i dobrze żeby to działało bezobsługowo.
Backup generalnie działa, tyle że ręcznie. Aczkolwiek da się to wyklikac z menu retropie bez konieczności robienia tego przez ssh. Automatycznie nie robi backupu z jakiegoś powodu.
Skrypt do którego się odwołują:
cat scriph.sh
#!/bin/bash
# syncs files via rclone
# usage: rclone.sh "up" "system" "/path/to/rom.ext"
##########################
# start of configuration #
##########################
# path to RCLONE
rclonePath="/home/pi/rclone-v1.39-linux-arm/rclone"
# local base directory for your saves
localPath="/home/pi/RetroPie/saves"
# remote directory for your saves, has to be configured via "rclone config" first
remotePath="retropie:RetroArch"
# set path to log file
logfile="/home/pi/log.txt"
########################
# end of configuration #
########################
# get parameters
direction="$1"
system=""
rom="$3"
# get name of ROM without extension
romfilepath="${rom%/*}"
romfilename="${rom##*/}"
romfilebase="${romfilename%%.*}"
romfileext="${romfilename#*.}"
# escape special characters in ROM name
filter="${romfilebase//\[/\\[}"
filter="${filter//\]/\\]}"
# begin entry in logfile
echo "---------------" >> ${logfile}
# check if local path exists, create if necessary
if [ ! -d "${localPath}/${system}" ]
then
echo "$(date +%FT%T%z): creating local path \"${localPath}/${system}\"" >> ${logfile}
mkdir "${localPath}/${system}"
fi
# prepare command for RCLONE
if [ "$direction" == "up" ]
then
# upload to remote
cmd="$rclonePath copy ${localPath}/${system} $remotePath/${system} --include \"${filter}.*\" --log-level \"INFO\" --log-file ${logfile}"
elif [ "$direction" == "down" ]
then
# download from remote
cmd="$rclonePath copy $remotePath/${system} $localPath/${system} --include \"${filter}.*\" --log-level \"INFO\" --log-file ${logfile}"
else
# error
echo "$(date +%FT%T%z): error with first parameter --> \"$1\" is not allowed" >> ${logfile}
exit 1
fi
# start RCLONE to sync
echo "$(date +%FT%T%z): started sync for ${rom}" >> ${logfile}
echo "$(date +%FT%T%z): starting ${direction}load..." >> ${logfile}
echo "$(date +%FT%T%z): command = $cmd" >> ${logfile}
eval $cmd
# end entry in logfile
echo "$(date +%FT%T%z): finished sync for ${rom}" >> ${logfile}
exit 0