Skip to content

Instantly share code, notes, and snippets.

@vlaminck
Last active April 24, 2018 20:57
Show Gist options
  • Save vlaminck/2225381a98fbdafcd1b316d191e6bab0 to your computer and use it in GitHub Desktop.
Save vlaminck/2225381a98fbdafcd1b316d191e6bab0 to your computer and use it in GitHub Desktop.
How to backup save files with Dropbox.

How to backup save files with Dropbox.

Huge thanks to andreafabrizi for his work on Dropbox-Uploader.

I wrote these scripts for backing up my save files (.srm and .state) on my RetroPie. To do this, I created a few scripts and placed them in ~/RetroPie/retropiemenu/. I then copied the gamelist.xml that I found in /opt/retropie/configs/all/emulationstation/gamelists/retropie/, and added entries for my scripts, and added icons to ~/RetroPie/retropiemenu/icons. All of this was done on RetroPie 4.0.RC1 so you may want to copy your own gamelist file and add the entries from partial-gamelist.xml to it. I intend to do this every time I update RetroPie just in case they change the gamelist.

Here are the steps to setting this up.

  1. download all of the files in this gist, and these icons
  • copy them to your pi however you're comfortable (I use scp)
    • scp game-save-backup.sh pi@retropie:game-save-backup.sh
    • scp game-save-overwrite.sh pi@retropie:game-save-overwrite.sh
    • scp game-save-download.sh pi@retropie:game-save-sync-download.sh
    • scp game-save-upload.sh pi@retropie:game-save-sync-upload.sh
    • scp gamelist.xml pi@retropie:gamelist.xml
    • scp Backup.png pi@retropie:Download.png
    • scp Dropbox.png pi@retropie:Dropbox.png
  • ssh into your pi
    • ssh pi@retropie
  • copy them into the retropiemenu directory
    • cp game-save-backup.sh RetroPie/retropiemenu/
    • cp game-save-overwrite.sh RetroPie/retropiemenu/
    • cp game-save-download.sh RetroPie/retropiemenu/
    • cp game-save-upload.sh RetroPie/retropiemenu/
    • cp gamelist.xml RetroPie/retropiemenu/
    • cp Backup.png RetroPie/retropiemenu/icons
    • cp Dropbox.png RetroPie/retropiemenu/icons
  • clone Dropbox-Uploader
    • git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
  • reboot your pi
    • sudo reboot

If you ever want to update Dropbox-Uploader to the latest version, simply ssh into you pi and run:
cd Dropbox-Uploader
git pull

As pointed out by robertybob on the RetroPie forums, andreafabrizi is using V1 of the Dropbox API which will be shut down June 2017. These setup steps should still work with any fork that uses V2. I haven't updated to any of these, but I will soon.

# copy files to backup
rsync -avrPRI --include="gamelist.xml" --include="*.srm" --include="*.state" --exclude="*" /home/pi/RetroPie/roms/*/* /home/pi/RetroPie/backup/
# download files from dropbox
. /home/pi/Dropbox-Uploader/dropbox_uploader.sh -f /home/pi/.dropbox_uploader download /backup/home/ /home/pi/RetroPie/backup
# copy backups to roms folder
sudo cp -vR /home/pi/RetroPie/backup/home/pi/RetroPie/roms/ /home/pi/RetroPie/
# reset permissions
sudo chmod -R 755 /home/pi/RetroPie/roms
sudo chown -R pi /home/pi/RetroPie/roms
sudo chgrp -R pi /home/pi/RetroPie/roms
# upload backups to dropbox
. /home/pi/Dropbox-Uploader/dropbox_uploader.sh -f /home/pi/.dropbox_uploader upload /home/pi/RetroPie/backup/ /
<?xml version="1.0"?>
<gameList>
<game>
<path>./audiosettings.rp</path>
<name>Audio</name>
<desc>Configure audio settings. Choose default of 'auto', 3.5mm jack, or HDMI. Mixer controls, and apply default settings.</desc>
<image>./icons/audiosettings.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./bluetooth.rp</path>
<name>Bluetooth</name>
<desc>Register and connect to bluetooth devices. Unregister and remove devices, and display registered and connected devices.</desc>
<image>./icons/bluetooth.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./configedit.rp</path>
<name>Configuration Editor</name>
<desc>Change common RetroArch options, and manually edit RetroArch configs, global configs, and non-RetroArch configs.</desc>
<image>./icons/configedit.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./esthemes.rp</path>
<name>ES Themes</name>
<desc>Install, uninstall, or update EmulationStation themes. Most themes can be previewed at https://github.com/retropie/ RetroPie-Setup/wiki/themes.</desc>
<image>./icons/esthemes.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./filemanager.rp</path>
<name>File Manager</name>
<desc>Basic ascii file manager for linux allowing you to browse, copy, delete, and move files. </desc>
<image>./icons/filemanager.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-scripts-update.sh</path>
<name>game-scripts-update</name>
<desc></desc>
<image></image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>1</playcount>
<lastplayed>20160801T170432</lastplayed>
</game>
<game>
<path>./raspiconfig.rp</path>
<name>Raspi-Config</name>
<desc>Change user password, boot options, internationalization, camera, add your pi to Rastrack, overclock, overscan, memory split, SSH and more.</desc>
<image>./icons/raspiconfig.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>1</playcount>
<lastplayed>20160801T162307</lastplayed>
</game>
<game>
<path>./retroarch.rp</path>
<name>Retroarch</name>
<desc>Launches the RetroArch GUI so you can change RetroArch options. Note: Changes will not be saved unless you have enabled the "Save Configuration On Exit" option.</desc>
<image>./icons/retroarch.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>1</playcount>
<lastplayed>20160801T162330</lastplayed>
</game>
<game>
<path>./retronetplay.rp</path>
<name>RetroArch Net Play</name>
<desc>Set up RetroArch Netplay options, choose host or client, port, host IP, delay frames, and your nickname.</desc>
<image>./icons/retronetplay.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./rpsetup.rp</path>
<name>RetroPie Setup</name>
<desc>Install RetroPie from binary or source, install experimental packages, additional drivers, edit samba shares, custom scraper, as well as other RetroPie-related configurations.</desc>
<image>./icons/rpsetup.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./runcommand.rp</path>
<name>Run Command Editor</name>
<desc>Change what appears on the runcommand screen. Enable or disable the menu, enable or disable box art, and change CPU configuration.</desc>
<image>./icons/runcommand.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./showip.rp</path>
<name>Show IP</name>
<desc>Displays your current IP address, as well as other information provided by the command, "ip addr show."</desc>
<image>./icons/showip.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>1</playcount>
<lastplayed>20160801T162917</lastplayed>
</game>
<game>
<path>./splashscreen.rp</path>
<name>Splash Screens</name>
<desc>Enable or disable the splashscreen on RetroPie boot. Choose a splashscreen, download new splashscreens, and return splashscreen to default.</desc>
<image>./icons/splashscreen.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./wifi.rp</path>
<name>WiFi</name>
<desc>Connect to or disconnect from a wifi network and configure wifi settings.</desc>
<image>./icons/wifi.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>false</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-backup.sh</path>
<name>_ Save Data Backup</name>
<desc>It's a good idea to do this periodically. Connect with your computer to get them off the pi, or upload to Dropbox with "_Save Data Sync Upload".</desc>
<image>./icons/Backup.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-overwrite.sh</path>
<name>_ Save Data Overwrite</name>
<desc>This will overwrite your local save data with data from your backup folder. Restart System when finished.</desc>
<image>./icons/Backup.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-download.sh</path>
<name>_ Save Data Sync Download</name>
<desc>Download your save data from Dropbox. Restart System when finished. You'll want to run "_ Save Data Overwrite." after this. Requires keyboard the first time.</desc>
<image>./icons/Dropbox.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-upload.sh</path>
<name>_ Save Data Sync Upload</name>
<desc>Upload your save data to Dropbox. Restart System when finished. You'll want to run "_ Save Data Backup." before this. Requires keyboard the first time.</desc>
<image>./icons/Dropbox.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
</gameList>
<game>
<path>./game-save-backup.sh</path>
<name>_ Save Data Backup</name>
<desc>It's a good idea to do this periodically. Connect with your computer to get them off the pi, or upload to Dropbox with "_Save Data Sync Upload".</desc>
<image>./icons/Backup.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-overwrite.sh</path>
<name>_ Save Data Overwrite</name>
<desc>This will overwrite your local save data with data from your backup folder. Restart System when finished.</desc>
<image>./icons/Backup.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-download.sh</path>
<name>_ Save Data Sync Download</name>
<desc>Download your save data from Dropbox. Restart System when finished. You'll want to run "_ Save Data Overwrite." after this. Requires keyboard the first time.</desc>
<image>./icons/Dropbox.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
<game>
<path>./game-save-upload.sh</path>
<name>_ Save Data Sync Upload</name>
<desc>Upload your save data to Dropbox. Restart System when finished. You'll want to run "_ Save Data Backup." before this. Requires keyboard the first time.</desc>
<image>./icons/Dropbox.png</image>
<thumbnail></thumbnail>
<rating>0.000000</rating>
<releasedate>not-a-date-time</releasedate>
<developer>unknown</developer>
<publisher>unknown</publisher>
<genre>unknown</genre>
<players>1</players>
<favorite>false</favorite>
<kidgame>false</kidgame>
<hidden>true</hidden>
<playcount>0</playcount>
<lastplayed>0</lastplayed>
</game>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment