Архивы по Категориям: скрипты

Еще одна полезная либа

Микролиба мейлер на php

https://github.com/anton-pribora/ApMailer

На всяких быстро-лендингах и прочей мелочевке очень пригодится.
Особенно удобно, что умеет копию письма схоронять локально.
Ну и html с аттачами — прям изи.

оптимизируем картинки сайтов

Ставим jpegoptim и optipng.

Первый раз запускаем руками

find /var/www ! -regex  '*.\(jpg\|JPG|jpeg\)$'  -print0 |  xargs -0 jpegoptim --max=94 --preserve --totals >> /root/jpegoptimfirsttime.log

И уходим пить кофе.

Потом делаем скриптик

#!/bin/bash
echo `date` >> /root/optipng.log
find /var/www/ -mtime -2 -iname '*.png' -print0 | \
 xargs -0 optipng -o7 -log /root/optipng.log -preserve
echo `date` >> /root/jpegoptim.log
find /var/www/ -mtime -2 -iname '*.jpg' -print0 | \
 xargs -0 jpegoptim --max=94 --preserve --totals >> /root/jpegoptim.log

И запускаем его по крону

# m h dom mon dow command
0 1 * * * /root/optimize-images.sh

Экономим место на хостинге и трафик. Реально можно подосвободить до 50%.
С max=94 можно поиграться. Если у вас не галерея профессиональных фотографий, то можно смело ставить 90.

bacula, бэкап mssql баз и грабли (а также питоны, самбаклиенты и все-все-все) часть вторая

В продолжение записи: bacula, бэкап mssql баз и грабли (а также питоны, самбаклиенты и все-все-все).

В процессе выяснились некоторые тонкости:
1) если бекап отрабатывал некорректно (ну вырубили сервак тупо, или место на винте кончилось), то в следующий раз бекап не проходил, т.к. файлик sql already exist, мать его.

2) логи скуля перед бекапом стоит шринкать, ибо нечего гонять лишнее по сети.

В итоге скриптик стал такой:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Импортируем библиотеку для работы с MSSQL
import pymssql
import sys
import os
ahost = sys.argv[1] + «.vashdomen.ru»
auser = sys.argv[2]
apassword = sys.argv[3]
awheredisk = sys.argv[4]
awhere = sys.argv[5]
adatabase = sys.argv[6]

# Соединение с БД. Если вы не в том-же домене, что и сервер БД, то вместо
# ИМЯ_КОМПЬЮТЕРА впишите его IP.
con = pymssql.connect(host=ahost, user=auser, password=apassword, database=adatabase)

# Создаем курсор для работы с соединением
cur = con.cursor()

## удаляем папку с бекапом с именем базы (нужно из-за глюка бакулы) если нету ее конечно такой
os.system(«smbclient -U=vashdomen.ru\\\\megauser%megapassword //»+ahost+»/»+awheredisk+»$ -c ‘cd «+awhere+»; cd «+adatabase+»; rm «+adatabase+».sql; cd ..; rmdir «+adatabase+» ‘»)

###создаем папку с именем базы (нужно из-за глюка бакулы).
os.system(«smbclient -U=vashdomen.ru\\\\megauser%megapassword //»+ahost+»/»+awheredisk+»$ -c ‘cd «+awhere+»; md «+adatabase+»‘»)

#запрос на шринканье базы
squery1=»ALTER DATABASE » + adatabase + » SET recovery simple»
squery2=»DBCC SHRINKDATABASE (» + adatabase + «, TRUNCATEONLY)»
squery3=»BACKUP LOG » + adatabase+ » WITH TRUNCATE_ONLY»
squery4=»ALTER DATABASE » + adatabase + » SET recovery full»

#запрос на бекап
query=»BACKUP DATABASE » + adatabase + » TO DISK = ‘» + awheredisk + «:\\» + awhere + «\\» + adatabase +»\\» + adatabase +».sql’ WITH INIT»

# Выполняем запросы
cur.execute(«commit tran»)
cur.execute(squery1)
cur.execute(squery2)
cur.execute(squery3)
cur.execute(squery4)
cur.execute(query)
cur.execute(«begin tran»)

# Подтверждаем транзакцию и закрываем соединение
#con.commit()
con.close()