Show pageOld revisionsBacklinksExport to PDFBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== rclone backup to Cloud Storage ====== This tutorial covers how to backup your ROMs, BIOS and SAVE-games of your Batocera machine to a [[wp>Cloud_Storage|Cloud Storage]]. This allows you to recover your data easily to a previous state in case of data loss or restore data on a new installation. Some small words at the beginning: What is **rclone**? Copying files can be done with numerous user interfaces, but rclone is a command-line tool specifically designed for copying files between cloud servers and another server or workstation. With simple tools, an interruption in service stops the file synchronization and copying processes. The rclone tool can recover if the connection between the workstation and server is interrupted. Several notable cloud services support rclone including Amazon S3 buckets, Microsoft OneDrive, Dropbox, Google Cloud Storage, Google Drive, Microsoft Azure Blob and File Storage, and several other providers. Administrators use rclone for unidirectional file synchronization, meaning that files are copied from a source to a destination only. ====== Supported Cloud Services ====== Up to now (06/2025) these providers are supported: 1Fichier, Akamai Netstorage, Amazon S3 (or S3 compatible), Backblaze B2, Box, Citrix ShareFile, Cloudinary, Dropbox, Enterprise File Fabric, Files.com, FTP, Gofile, Google Cloud Storage, Google Drive, Google Photos, HDFS, HiDrive, HTTP, iCloud Drive, Internet Archive, Jottacloud, Koofr, Linkbox, Mail.ru Cloud, Mega, Memory, Microsoft Azure Blob Storage, Microsoft Azure Files Storage, Microsoft OneDrive, OpenDrive, OpenStack Swift, Oracle Object Storage, pCloud, PikPak, Pixeldrain, premiumize.me, put.io, Proton Drive, QingStor, Quatrix by Maytech, Seafile, SFTP, Sia, **SMB**, SugarSync, Storj, Uloz.to, Uptobox, **WebDAV**, Yandex Disk, Zoho WorkDrive, **The local filesystem** \\ The bold marked entries suggest that **rclone** can be used with really any Provider or network system. But consider then that for local FS it would be better to use rsync for example \\ You can always take a look [[https://rclone.org/overview/|here for a supported cloud storages]] ====== Setup rclone in Batocera ====== Now we want to setup **rclone** from Batocera. These instructions only work for Koofr, please visit * Open a [[:access_the_batocera_via_ssh|terminal or SSH]] session * Enter ''rclone config'' \\ * <code>No remotes found, make a new one? n) New remote s) Set configuration password q) Quit config n/s/q> n</code> * Choose ''n'' * Give your cloud device a name, maybe ''backup'' or your provider name ''yourCloudProvider'' * From here go to https://rclone.org/ and select your storage provider you are using or google ''yourCloudProvider rclone'' * If everything went correct you will see a windows like * <code>-------------------- [yourProvider] type = yourCloudProvider provider = yourCloudProvider user = USERNAME password = *** ENCRYPTED *** -------------------- y) Yes this is OK (default) e) Edit this remote d) Delete this remote y/e/d> y</code> * Enter ''y'' and everything is set and ready, wen need to make some test now It's **worth** the matter but please ... we can't provide information for every usecase. ====== Testing ====== Remeber which name you entered? ''backup'' or ''yourCloudProvider''? List directories in top level of your ''yourCloudProvider'' rclone lsd yourCloudProvider: List all the files in your ''yourCloudProvider'' rclone ls yourCloudProvider: To copy a local directory to a directory called backup rclone copy /home/source yourCloudProvider:backup ====== Service Script ====== A fellow user created a nice service script that will hit the purpose. So thank you Peter Boszo for your nice [[https://gitlab.com/peterbozso/batocera-backup-service|service script]] <WRAP center round important 60%> Be aware this script syncs only to the storage. So if you fire up this on a new installation, all your files will be overwritten. This is caused by the ''--sync'' flag. </WRAP> For preservatoin purposes it is included into this wiki as well with a nice addition that the name of the setted Provider can be changed. <code bash| RCLONE_SERVICE> #!/bin/bash # ------------------------------- CONFIG BEGIN -------------------------------- # The location of Batocera data on your cloud storage. destDir=/Batocera # Waiting time between two backups in seconds. # The below configuration means that the service will do a backup every minute. waitSeconds=60 # Change name setted from rclone config as name, default is backup rcloneName=backup # If set to true, logs from all runs of the service are preserved. # If set to false, only logs since the last start of the service are kept. keepLogs=false # -------------------------------- CONFIG END --------------------------------- runFile=/var/run/backup-service logFile=/var/log/backup-service.log # This needs to be set explicitly, because $HOME is not set when the service is started by Batocera. export RCLONE_CONFIG=/userdata/system/.config/rclone/rclone.conf manual() { echo "> CONFIG sync" ------------------------------------------------------------------------------------ rclone sync /userdata/system/batocera.conf ${rcloneName}:${destDir}/system --progress echo "> SAVES sync" ------------------------------------------------------------------------------------- rclone sync /userdata/saves ${rcloneName}:${destDir}/saves --exclude "flatpak/**" --progress echo "> ROMS sync" -------------------------------------------------------------------------------------- rclone sync /userdata/roms ${rcloneName}:${destDir}/roms --exclude "flatpak/**" --progress echo "> BIOS sync" -------------------------------------------------------------------------------------- rclone sync /userdata/bios ${rcloneName}:${destDir}/bios --progress } start() { touch ${runFile} if [ "$keepLogs" = false ]; then rm -f ${logFile} fi timeStamp="$(date)" echo -e "\n--- SERVICE START - [${timeStamp}] ---\n" >>${logFile} while test -e ${runFile}; do sleep ${waitSeconds} rclone sync /userdata/saves ${rcloneName}:${destDir}/saves --exclude "flatpak/**" --log-file ${logFile} --log-level INFO done } stop() { rm -f ${runFile} } status() { if test -e ${runFile}; then echo "Backup service is running. Logs: ${logFile}" else echo "Backup service is not running." fi } case "$1" in manual) manual ;; start) start & ;; stop) stop ;; status) status ;; *) echo "Usage: https://gitlab.com/peterbozso/batocera-backup-service" ;; esac </code> rclone_cloudbackup.txt Last modified: 12 months agoby crcerror