Page 1 of 1

Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 3:25 pm
by HerrNilsson
Hello

I have a rather large music collection, about 3,5TB. So i do not want to lose all my thumbnails and settings.
I therefore created an automatic backup script i'd like to share if anyone else needs it.

I'm running Ubuntu Server but it runs fine on any Linux machine.
You need a mounted cifs or smb share. You can automatically mount the share every time your server starts by editing the /etc/fstab with:

Code: Select all
sudo nano /etc/fstab


Then add the following at the bottom line, replace **** with username and password and replace //IP_TO_BACKUP_LOCATION/Backupfolder_Subsonic with your backup location.

Code: Select all
//IP_TO_BACKUP_LOCATION/Backupfolder_Subsonic /mnt/backup cifs username=****,password=****


Create the script in /bin/execute/scripts/ with

Code: Select all
sudo nano /bin/execute/scripts/backupsubsonic.sh


Then paste the following rows:
Change the username to your actual username.
This will basically zip your installation and put it in a folder with today's date. If you just want one copy, just replace the "Subsonic $(date +%F)" with "Subsonic"


Code: Select all
tar -zcf /home/username/backup.tgz /var/subsonic
/bin/mkdir /mnt/backup/"Subsonic $(date +%F)"
/bin/cp -r /home/username/backup.tgz /mnt/backup/"Subsonic $(date +%F)"
rm /home/username/backup.tgz


Now to run the script automatically you need do the following:

Code: Select all
sudo crontab -e


Then paste:
This will run every day at 01:01. More information about cron http://en.wikipedia.org/wiki/Cron

Code: Select all
01 01 * * * /bin/sh /bin/execute/scripts/backupsubsonic.sh >/dev/null 2>&1


EDIT: If anyone wants help with the same this on a Windows machine i'd be happy to help.

Hopefully this will help someone out. If i can i'll be happy to answer any questions.

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:06 pm
by daneren2005
I already have a nightly backup script, but I hadn't thought of throwing Subsonic in the backups. Is the db stored under that directory as well?

PS, I just went the cheater route and did a one line addition:

Code: Select all
tar -zcf /mnt/backup/Subsonic/"$(date +%F)".tgz /var/subsonic


Edit: Changed the line to be better file name

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:10 pm
by HerrNilsson
Usually you have the database under the subsonic-folder. So it will be included aswell.
I did that fist. But for me it is much faster to tar it first then move it. :)

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:15 pm
by daneren2005
Yah it probably would be a better idea to do it that way, I'm just trying to keep an already huge backup script from growing too much. I wonder how well this works on a running subsonic instance. I'm guessing if subsonic is running and changes the db while you are copying it it will be an corrupted db.

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:29 pm
by hakko
For those running the MusicCabinet server, I'd like to add that there's a handy utility to also back up your PostgreSQL database. It creates consistent backups even if your database is used concurrently.

Reference: http://www.postgresql.org/docs/9.2/stat ... gdump.html

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:30 pm
by HerrNilsson
daneren2005 wrote:Yah it probably would be a better idea to do it that way, I'm just trying to keep an already huge backup script from growing too much. I wonder how well this works on a running subsonic instance. I'm guessing if subsonic is running and changes the db while you are copying it it will be an corrupted db.


Well i'm running at night so there's no one editing the database then. I have restore successfully once so it should work.
Otherwise you could just kill the process before then fire it up after.

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:32 pm
by hakko
I guess most people do their scanning at night, which is when the database will get written to. That's when you run the risk of saving an inconsistent state. Daily usage is normally just reads anyway (except updating settings etc).

Re: Automaticly backup you Subsonic-installation

PostPosted: Wed Dec 05, 2012 4:38 pm
by daneren2005
Hmm, while it probably won't be an issue I guess I'll just assume that while some of them might fail there should statistically speaking be at least one valid backup in the past week. Now the interesting part is pruning the old backups so you only keep so many of them :D

Re: Automaticly backup you Subsonic-installation

PostPosted: Thu Dec 06, 2012 5:41 pm
by jol
daneren2005 wrote:I'm guessing if subsonic is running and changes the db while you are copying it it will be an corrupted db.
I know this thread is about Linux, but on Windows one can use volume shadow copies to ensure consistent backups. Is there no similar mechanism for Linux file systems?
Best regards, jol

Re: Automaticly backup you Subsonic-installation

PostPosted: Thu Dec 06, 2012 8:12 pm
by daneren2005
jol wrote:
daneren2005 wrote:I'm guessing if subsonic is running and changes the db while you are copying it it will be an corrupted db.
I know this thread is about Linux, but on Windows one can use volume shadow copies to ensure consistent backups. Is there no similar mechanism for Linux file systems?
Best regards, jol

The only information on shallow copies I can find is that they are links, which of course linux can do, but has nothing to do with being able to do a transactional copy. Maybe you are calling it by the wrong name? Mind giving an example of how you do this in windows?

Re: Automaticly backup you Subsonic-installation

PostPosted: Thu Dec 06, 2012 8:17 pm
by daneren2005
This is an interesting note I found while doing some googling:

"In rsync, transfers are done to a temporary file, which is cut over atomically, so the transfer either happens in its entirety or not at all"

So maybe there is a benefit of doing a rsync, then zipping that folder, then moving it to wherever you want it, then deleting both the tmp folder and the tmp zip

Edit: I changed my setup to be:

Code: Select all
rsync -tr --delete /var/subsonic /tmp
tar -zcf /tmp/subsonic_backup.tgz /tmp/subsonic
mv /tmp/subsonic_backup.tgz /mnt/backup/Subsonic/"$(date +%F)".tgz
rm -r /tmp/subsonic


I keep getting a warning during the tar process though. Any clue which files it's removing this from and if this means it won't be as simple as doing a drop in backup replacement (ie: need to rename a file)?

Code: Select all
Removing leading '/' from member names

Re: Automaticly backup you Subsonic-installation

PostPosted: Fri Dec 07, 2012 6:10 am
by jol
daneren2005 wrote:The only information on shallow copies I can find is that they are links, which of course linux can do, but has nothing to do with being able to do a transactional copy. Maybe you are calling it by the wrong name? Mind giving an example of how you do this in windows?
Not Shallow Copies but Shadow Copy - big difference. Sorry for assuming the term is known. If you are interested I can post my batch file using diskshadow, but it is Windows only of course.
daneren2005 wrote:This is an interesting note I found while doing some googling:

"In rsync, transfers are done to a temporary file, which is cut over atomically, so the transfer either happens in its entirety or not at all"
Imho helps only if the file cannot change while the temorary copy is produced and consistency of files is sufficient (usually not the case with databases using multiple files).
Best regards, jol