|
Перед каждым веб-мастером или системным администратором рано или поздно встает одна простая, но крайне важная задача - резервное копирование данных. Своих или заказчика, клиента. Не важно. Важность задачи сложно недооценить человеку, имеющему опыт работы с компьютером, тем более сисадмину.
Уже много месяцев помогаю людям запускать блоги и развивать с помощью их свой бизнес в Интернет. Сегодня наконец решился написать простое решение для копирования резервных копий своих сайтов и сайтов клиентов с хостинга на свой домашний сервер. Как же использовать для решения этой задачи язык программирования Python?
После непродолжительных поисков решения решил, что проще всего будет использовать уже некое универсальное решение, о котором впервые я услышал на PyCamp 2010, который проходил в Киеве. Это библиотека Fabric и утилита fab.
Итак задача: скачать и сохранить ежедневный бекап с хостинга на домашний сервер. Затем удалить бекап, которому 3 дня от роду. Схема простецкая и не идеальная в принципе т.к. cron будет удалять трехдневный бекап даже когда скачивание сегодняшнего бекапа завершилось неудачей.
Установка под Fedora Core 9:
pip install fabric
Код fabfile.py - файл, который используется для утилиты fab, которая запускается cron с параметрами:
from __future__ import with_statement
from fabric.api import *
from fabric.colors import *
from fabric.contrib.console import confirm
from fabric.operations import get
from datetime import date, timedelta
env.hosts = ['
Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
']
env.password = 'xxxxxx'
def webBackups():
today = date.today()
with lcd('/home/xxxxxxx/backup/xxxxxxxxx-projects'):
get('admin/backup/' + str(today));
def cleanOld():
three_days = timedelta(days=3)
three_days_ago = date.today() - three_days
local('rm -Rf /home/xxxxxxxx/backup/xxxxxxxxxxxxxxxx-projects/
Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
/' + str(three_days_ago))
Вот так выглядит запуск в cron:
fab webbackups cleanOld
Если кому-то интересно как это работает (для новичокв, папкам думаю и так все понятно), напишите мне (раздел Контакты).
Скоро градут еще статьи с примерами использования python. |