Python Backup Script Python

What it does

We use a Virtual Private Server to host multiple web domains. Each domain could have several hosting accounts. I wrote a Python script that compresses each domain folder into a tarball. That tarball is stored outside of the web root. After a tarball has been made, the script uses FTP protocol to save the backups to a remote server. After the FTP transfers finishes, the script prunes our repository of tarballs so our server does not become too full. This script keeps us backed up in case of a server failure or hacking event.

You can see the actual code I wrote in the next tab. You can also see the direct output from the Cron job when you run the script.

The code

#!/usr/bin/python import datetime import ftplib import tarfile import zlib import gzip import os import sys import time user = '/home/akbsplice/' archives_folder = '/home/akbsplice/archives/' domains = ['splice.tv','bugbase.splice.tv','login.bbymam.splice.tv','xibo.splice.tv','wp.splice.tv','splicehere.com', 'databases']; todaysdate = datetime.date.today() todaysdate = todaysdate.strftime("%m-%d-%Y") ftpserver = 'ftp.example.com' ftpport = 21 ftpuser = 'test_user' ftppass = 'test_password' #create a dated folder for domain in domains: print "Starting tarball for... " + domain # if not os.path.exists(archives_folder + domain): # os.makedirs(archives_folder + domain) tar = tarfile.open(archives_folder+domain+"_"+todaysdate+".tar.gz", "w:gz") tar.add( user+domain, arcname=domain+"_"+todaysdate) tar.close() print "tar file created successfully" ftp = ftplib.FTP(ftpserver) print "getting ready to log in" ftp.login(ftpuser, ftppass) print "logged in" print "sending archive via FTP to remote server" ftp.cwd("/") os.chdir(archives_folder) backupfile = open(domain+"_"+todaysdate+".tar.gz", 'r') ftp.storbinary('STOR ' +domain+"_"+todaysdate+".tar.gz", backupfile) backupfile.close() print domain+"_"+todaysdate+".tar.gz has been uploaded to FTP" print "Looking for past archives that have stayed around too long." for archive in os.listdir(archives_folder): if (os.stat(os.path.join(archives_folder,archive)).st_mtime < time.time() - 30 * 86400): os.remove(os.path.join(archives_folder,archive)) print "I deleted a past archive - " + archive +" because it was older than 30 days" print "script finished, your work here is done. It's Miller Time!"

The result

Starting tarball for... splice.tv tar file created successfully getting ready to log in logged in sending archive via FTP to remote server splice.tv_04-13-2016.tar.gz has been uploaded to FTP Starting tarball for... bugbase.splice.tv tar file created successfully getting ready to log in logged in sending archive via FTP to remote server bugbase.splice.tv_04-13-2016.tar.gz has been uploaded to FTP Starting tarball for... login.bbymam.splice.tv tar file created successfully getting ready to log in logged in sending archive via FTP to remote server login.bbymam.splice.tv_04-13-2016.tar.gz has been uploaded to FTP Starting tarball for... xibo.splice.tv tar file created successfully getting ready to log in logged in sending archive via FTP to remote server xibo.splice.tv_04-13-2016.tar.gz has been uploaded to FTP Starting tarball for... wp.splice.tv tar file created successfully getting ready to log in logged in sending archive via FTP to remote server wp.splice.tv_04-13-2016.tar.gz has been uploaded to FTP Starting tarball for... splicehere.com tar file created successfully getting ready to log in logged in sending archive via FTP to remote server splicehere.com_04-13-2016.tar.gz has been uploaded to FTP Starting tarball for... databases tar file created successfully getting ready to log in logged in sending archive via FTP to remote server databases_04-13-2016.tar.gz has been uploaded to FTP Looking for past archives that have stayed around too long. I deleted a past archive - splice.tv_03-09-2016.tar.gz because it was older than 30 days I deleted a past archive - bugbase.splice.tv_03-09-2016.tar.gz because it was older than 30 days I deleted a past archive - login.bbymam.splice.tv_03-09-2016.tar.gz because it was older than 30 days I deleted a past archive - xibo.splice.tv_03-09-2016.tar.gz because it was older than 30 days I deleted a past archive - wp.splice.tv_03-09-2016.tar.gz because it was older than 30 days I deleted a past archive - splicehere.com_03-09-2016.tar.gz because it was older than 30 days I deleted a past archive - databases_03-09-2016.tar.gz because it was older than 30 days script finished, your work here is done. It's Miller Time!

Nagios Script

A custom Nagio Monitoring plugin for OS X machines.

Python Backup Script

A script to back up web domains from a Linux VPS.

Resolve Database

Script to back up multiple databases for a Resolve Server running Postgres.

Producer Portal

This is a PHP web application that is used by producers to start a job.

Editor's WTF?!

My effort to create a desktop app written in Python. This is a simple video file transcoder.