View RSS Feed

siosios

Automated linux file backup w/Webmin

Rate this Entry
Quote Originally Posted by siosios View Post
Automated linux file backup w/Webmin


As I manage 3 linux server computers, it became more apparent I needed to setup some kind of automatic backup method of certain data for the game servers that I manage. After about 4 hours of working, I created that system I needed and im sharing the method and custom scripts I coded to do this. (This is tested on a RHEL based distro, but will probably work on any RHEL or dabien linux distro). When copying the below code, you need to put it into a notepad and save it as a something.sh? file.
The following is an example of Counter-Strike Source automated backup (but it can be adapted to anything on the server).

Code:
echo Backing up Server /cfg?
echo Appending Date
echo Transfering Directories
echo 
echo cd ./home/server/
tar czvfC $1server.$(date +%Y%m%d%-%H%M%S).tgz $1 /home/server/cstrike/cfg /home/server/cstrike/cfg
echo done
echo ?
echo Location= /home/server/backup/?
Where the echos are just for information and keeping track of the script and what its doing. The tar command will go out to a directory, compress it and put it into the current directory the SH script is in and append a date to it. All you need to do is to type sh serverbackup.sh? in shell. Later Ill talk about setting up cron jobs to automatically do this without any user intervention. Server indicates what you want the tar ball to be named with the date appended to it. Server, you replace it with the backup directory you want.

Now to keep this easy with setting up cron jobs, youll need to put another SH script in the home directory of the server.

Put this backup.sh? file into the home directory for the user (easier for setting up cron jobs)

cd ./backup
sh serverbackup.sh

This will change directory to where the backup location is (in this case, its a folder in the home directory labeled backup?), then the script execs the serverbackup.sh file and does the backup. This way it keeps a ton of backup files out of the home directory and out of the servers hair so to speak by having its own folder to store them in.

Next youll want to create a masterbackup.sh? file to forcibly invoke any sh backup location that is designated.

Here is an example of such a script that I use:

Code:
 
echo Executing MasterBackup
 
 
cd ..
 
 
echo Server1?
 
 
cd ./home/server1/
 
 
sh backup.sh
 
 
echo ..check
 
 
echo Server2?
 
 
cd ..
 
 
cd ./server2
 
 
sh backup.sh
 
 
echo ..check
 
 
echo Server3?
 
 
cd ..
 
 
cd ./Server3
 
 
sh backup.sh
 
 
echo ..check
 
 
echo Server4?
 
 
cd ..
 
 
cd ./server4
 
 
sh backup.sh
 
 
echo ..check
 
 
echo Server5??
 
 
cd ..
 
 
cd ./server5
 
 
sh backup.sh
 
 
echo ..check
 
 
echo Finished MasterBackup
?

Where the server#? is a seperate home directory of a game server, the script cds to the first server, then backs out 1 directory and cds to the next home directory and execs the backup script which in turn invokes the backup script of the server in a daisy chain effect. Put this script in /root (or adapt it yourself for somewhere else)
This can all be automated using cron jobs. Login to webmin, goto system? and click on cron jobs? module. From here, create a new cron put in the user of the game server (or anything else) and it will automatically when it runs the cron job, cd to the home directory, therefore you need to put sh backup.sh as the command? which will exec the first script (which in turn cds to the backup folder directory and execs the real backup script for that user account). Set the time you want the backup to happen (I use once every 24 hours) and create it.

All done, you now have an automatic backup every 24 hours of a Counter-Strike (TS or any other use) important config information stored in a seperate directory.

Now, 1 other thing I do, on a weekly basis. I run a partial game server backup every week and backup the /cfg, /addons, /logs folder of each game server on the linux box. For this I use:

Code:
 
echo Backing up Computer??
 
 
echo Appending Date??
 
 
tar czvfC $1il.$(date +%Y%m%d%-%H%M%S).tgz $1 /home/server1/cstrike/cfg 
/home/server1/cstrike/cfg /home/server1/cstrike/addons 
/home/server1/cstrike/addons /home/server1/cstrike/logs 
/home/server1/cstrike/logs /home/server2/cstrike/cfg /home/server2/cstrike/cfg 
/home/server2/cstrike/addons /home/server2/cstrike/addons 
/home/server2/cstrike/logs /home/server2/cstrike/logs /home/server3/cstrike/cfg 
/home/server3/cstrike/cfg /home/server3/cstrike/addons 
/home/server3/cstrike/addons /home/server3/cstrike/logs 
/home/server3/cstrike/logs /home/server4/cstrike/cfg /home/server4/cstrike/cfg 
/home/server4/cstrike/addons /home/server4/cstrike/addons 
/home/server4/cstrike/logs /home/server4/cstrike/logs /home/teamspeak/tss2_rc2 
/home/teamspeak/tss2_rc2
 
 
echo done
 
 
echo
 
 
echo Location= /root/backup/?
This script will backup any folders you want to any backup location (in this case /root/backup) and setup as a cron job.

Feel free to use this system and/or comment on it, If something is confusing, let me know and ill further clarify it.

*edit* make sure to set the permissions correctly or it will not work, must have 0755 permission assigned to the correct shell user account and group, otherwise when it goes to backup with the cron jobs, it gets a access denied and doesnt backup.

Submit "Automated linux file backup w/Webmin" to Digg Submit "Automated linux file backup w/Webmin" to Google Submit "Automated linux file backup w/Webmin" to facebook Submit "Automated linux file backup w/Webmin" to reddit Submit "Automated linux file backup w/Webmin" to yahoo

Tags: None Add / Edit Tags
Categories
Tech Space

Comments

Trackbacks

Total Trackbacks 0
Trackback URL: