Skip to main content

Python Script: Taking mysql backup and moving backup to a remote server

Hello Friends,

Below is the script to take mysql backup and moving it to a remote server.


#!/root/python/Python-3.3.0/python

import os
import time
import datetime
date1 = time.strftime('%Y%m%d%H%M%S')
f = open('/root/mypython/dblist.txt') # this files contains the name of databases
line = f.readline()
f.close()
words = line.split()
for word in words:
    cmd = "mysqldump -u root -pabhishek {0} > {0}_{1}.sql".format(word, date1) # takes backup in the same location as script
    cmd2 = "zip {0}_{1}.zip {0}_{1}.sql".format(word, date1) # zips the backup just taken
    cmd3 = "rm -f {0}_{1}.sql".format(word, date1) # deletes the .sql backup just taken. after this step only .zip backup remains. remove this line if u need both .sql and .zip
    cmd4 = " scp {0}_{1}.zip root@192.168.1.105:/home/laitkor/dev_test ".format(word, date1)
    os.system(cmd)
    os.system(cmd2)
    os.system(cmd3)
    if os.system(cmd4)== 0:
        result = "Backup Successful"
print(result)


_______________________________________________________________

Things to be remember

1. The cmd4 command do a scp. You must have key based login enable from your server to remote server otherwise you will be asked password of remote server, which the script can't provide.

To enable key based login, see below:

http://pc2solution.blogspot.in/2013/03/how-to-enable-key-based-login-in-linux.html

2. The first line of the script makes it executable, so for scheduling backup, you just need to enter full path in crontab, e.g. if you want to run this script every ten minutes do following entry in crontab 
*/10 * * * * /home/myscript.py

3. Make script executable by chmod 777 or whatever permission you want.

Comments

Popular posts from this blog

Python: Rename all files in a folder with names as numbers in ascending order

Hi Friends,

This script will rename files as 1.zip, 2.zip, 3.xls etc for all files in same folder as scripts:

import os
x = 0
for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))):
    ext = filename.split('.')
    extension = ext[1]
    os.rename(filename, str(x) + '.' + extension)
    x = x + 1

=====================================================================

Explanation:

1. extension = ext[1] collects the extension of file. If you skip this line, the files will be renamed without any extension.

2. Script should be in same folder as files. There should not be any folder in the folder.

Tunneling through putty: Accessing a internal website or service outside the network

Hello friends, there are many situation where you have to open a service or website that is neither in your network nor running with a public IP. The site or service is running properly inside the network, but you have to use it outside the network. Is it simple? Yes. 

First you need to download putty.exe. Go, download and then read further. 

All right, let us assume you are working on a local PC, lets say its IP is 192.168.1.50.  There is another website 192.168.3.33, which you cannot open on your local PC, as this is on different network. If you can access it directly, because of something you have already done, then no need to read further. Lets say you have another server, 192.168.3.110,  be it different or same as the website hosting server, but it must be on 192.168.3.x network. Then do as below figures:




You will use the port as per the website. In my experience, even if you use any different port, it will work.
Now, put IP of website in destination, port in source port and then add…

Python: Send mail with attachment ( Any file format)

So you want to send mail with any file as attachment. This script works with any type of attachment. I have given the example of .kml file, an unusual one. You can use pdf, docx etc.



import mimetypes
import email
import email.mime.application
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
import smtplib

# Create a text/plain message
msg = email.mime.Multipart.MIMEMultipart()
msg['Subject'] = 'Groove'
msg['From'] = 'mysender@gmail.com'
msg['To'] = 'receiver@gmail.com'

# The main body is just another attachment
body = email.mime.Text.MIMEText("""Hello, how are you? """)
msg.attach(body)

# KML attachment
filename='cache/20140210204804.kml'
fp=open(filename,'rb')
att = email.mime.application.MIMEApplication(fp.read(),_subtype="kml")
fp.close()
att.add_header('Content-Disposition','attachment',filename=filename)
msg.attac…