You are not logged in.
Pages: 1
I wrote a backup script that i thought others would enjoy. Please give me your feedback!
#!/usr/bin/env python
# sweetbackup version 0.1 - simple python script to backup the system using rsync
# written by lukas sabota
# 12/22/05
#
# notes:
# * check out the globals and adjust them to your satisfaction
# * touch a backup_ok file into the directory of your back. You may ask why.
# This is to ensure that the proper media is mounted to the filesystem. It's a big
# waste of space to backup the entire system onto the same media
# * if your backup fails you'll get a notification on your desktop
# * erm.. that's it. i think
#
# todo:
# * maybe a conffile might be better than the globals
# * a log
# * some sort of backup notification of failure besides the file in the home folder
# * comment some stuff
# changes:
# 0.1 - initial release. it's sweet
import os,sys,datetime,time
# important globals
backupdirs=['/etc', '/root', '/home', '/var/log', '/var/www']
dest="/media/usbdisk/backup"
binary='/usr/bin/rsync'
errorfile=os.environ['HOME']+'/Desktop/backupERROR'
options='-av --delete'
def oops(error ,n):
message = 'Error code '+str(n)+': '+error
print message
file = open(errorfile, 'w')
file.write(str(datetime.datetime.now()))
file.write('n')
file.write(message)
file.write('n')
file.close
sys.exit(n)
print 'rsync: ',
if os.access(binary, os.X_OK):
print 'okay =)'
else:
print 'nope =('
oops('The rsync could not be accessed at '+binary, -1)
print 'file: ',
if os.access(dest+'/backup_ok', os.F_OK):
print 'okay! =)'
else:
print 'nope =('
oops(dest+'/backup_ok'+' does not exist. Please create this file so this script knows that the installation media is available.', -2)
print 'write: ',
if os.access(dest, os.W_OK):
print 'okay =)'
else:
print 'nope =('
oops('Write access is denied to '+dest, -3)
for x in backupdirs:
print 'read ', x, ': '
if os.access(x, os.R_OK):
print 'good :)'
else:
print 'nope =('
oops('Read access is not granted to'+x, -4)
command = binary + ' ' + options
for x in backupdirs:
command = command + ' ' + x
command = command + ' ' + dest
if os.system(command) == 0:
print 'success!'
sys.exit(0)
else:
oops('Rsync error. Backup FAILED.', -5)
If I have the gift of prophecy and can fathom all mysteries and all knowledge, and if I have a faith that can move mountains, but have not love, I am nothing. 1 Corinthians 13:2
Offline
rsync for backups to a usb device?
I would recommend using tar instead.
Tar can do incremental backups as well as full backups.
If you only want to preserve the current 'snapshot' then a full backup/overwrite would likely still be better than just an rsync across..
added bonus - you can use compression (gz or bz2)
other than your choice of backup utilities.. looks good.
I am sure many will find it useful.
"Be conservative in what you send; be liberal in what you accept." -- Postel's Law
"tacos" -- Cactus' Law
"t̥͍͎̪̪͗a̴̻̩͈͚ͨc̠o̩̙͈ͫͅs͙͎̙͊ ͔͇̫̜t͎̳̀a̜̞̗ͩc̗͍͚o̲̯̿s̖̣̤̙͌ ̖̜̈ț̰̫͓ạ̪͖̳c̲͎͕̰̯̃̈o͉ͅs̪ͪ ̜̻̖̜͕" -- -̖͚̫̙̓-̺̠͇ͤ̃ ̜̪̜ͯZ͔̗̭̞ͪA̝͈̙͖̩L͉̠̺͓G̙̞̦͖O̳̗͍
Offline
What options would you suggest for tar so that the same stuff isn't getting rebacked up every time you backup? so only newly modified stuff gets backed up, and permissions and everything are kept?
basically, what's the tar equivilent of rsync -av --delete
If I have the gift of prophecy and can fathom all mysteries and all knowledge, and if I have a faith that can move mountains, but have not love, I am nothing. 1 Corinthians 13:2
Offline
there are a few links on the left that I find useful references..
"Full/Incremental Backups" and "Example Backup Commands"
eg:
Simplified tar --newer Incremental Backup example
* LastBackupTime = `cat /Backup_Dir/Last.txt`
* tar zcvf --newer $LastBackupTime /Backup_Dir/Date.x.tgz $DIRS
* echo "Date" > /Backup_Dir/Last.txt
"Be conservative in what you send; be liberal in what you accept." -- Postel's Law
"tacos" -- Cactus' Law
"t̥͍͎̪̪͗a̴̻̩͈͚ͨc̠o̩̙͈ͫͅs͙͎̙͊ ͔͇̫̜t͎̳̀a̜̞̗ͩc̗͍͚o̲̯̿s̖̣̤̙͌ ̖̜̈ț̰̫͓ạ̪͖̳c̲͎͕̰̯̃̈o͉ͅs̪ͪ ̜̻̖̜͕" -- -̖͚̫̙̓-̺̠͇ͤ̃ ̜̪̜ͯZ͔̗̭̞ͪA̝͈̙͖̩L͉̠̺͓G̙̞̦͖O̳̗͍
Offline
there are a few links on the left that I find useful references..
"Full/Incremental Backups" and "Example Backup Commands"eg:
Simplified tar --newer Incremental Backup example * LastBackupTime = `cat /Backup_Dir/Last.txt` * tar zcvf --newer $LastBackupTime /Backup_Dir/Date.x.tgz $DIRS * echo "Date" > /Backup_Dir/Last.txt
using this example you would only have a couple files in each backup: only the files modified since the last backup.
If I have the gift of prophecy and can fathom all mysteries and all knowledge, and if I have a faith that can move mountains, but have not love, I am nothing. 1 Corinthians 13:2
Offline
I've been using a similar script:
http://applications.linux.com/article.p … 240&tid=13
I like the exclude feature.
Offline
Pages: 1