Из архива раздела:

*nix

HP ProLiant MicroServer N40L with Supermicro AOC-SG-i2 Dual Gigabit i82575EB

Написал(а): ZeroChaos| Когда: 31 января, 2012 г.

Привезли наконец-то двухпортовую серверную сетевую карту Supermicro AOC-SG-i2 Dual Gigabit i82575EB. Поставил, заодно и конвертер 5.25″ ODD Bay to 3.5″ HDD Bay прикрутил. Улучшить конфигурацию можно, разве что, поставив Remote Access Card (KVM-over-IP). Ну, либо дискретную видяху, один свободный слот остался. Только кому она на сервере нужна? Нужды в HTPC при наличии Popcorn Hour особо нет, к тому же видеокарту мощностью больше 25 Вт не поставить. Да и без Remote Access Card обойдусь, наверное. Что бы еще прикрутить?

{ Нет комментариев }

rsync — Automated backup script (with snapshots)

Написал(а): ZeroChaos| Когда: 16 января, 2012 г.

Решил немного упростить задачу резервного копирования при помощи rsync и написал для этого небольшой скрипт на bash. Да, знаю, уже есть несколько решений, упрощающих backup при помощи rsync, но для того, чтобы выполнить требуемую задачу, все равно пришлось бы писать для этого свою обвязку. Потому было принято решение написать что-то свое, максимально упрощающее задачу бэкапа и сопутствующих этому действий, таких как генерация ключа для авторизации по ssh, а так же его копирование на backup-сервер.

Следующий скрипт позволяет читать список копирумых каталогов из текстового файла, применять маску исключений, задаваемую в текстовом файле, а так же опционально делать snapshot’ы, содержащие измененные, либо удаленные файлы. Тем самым, появляется возможность откатиться на старые версии файлов, случайно удаленных, к примеру, либо ошибочно измененных. При этом сохраняется полная изначальная структура каталогов, что позволяет легко найти требуемый файл. Snapshot’ы хранятся в каталогах со следующей маской в имени: ‘год-месяц-день.XXчXXм’. Есть возможность авто-ротации snapshot’ов.

backup.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/sh

# --------------------------------------------
# Automated backup script
# Written by ZeroChaos
# Version 1.1, 2012-01-14
# Site: http://zerolab.net/
# --------------------------------------------
# NOTE: Exclude spaces in the variable FOLDER!
# --------------------------------------------
# set -e

# -------------------------------------------- begin of [Configurable settings]
# Use SSH for sync
export RSYNC_RSH="ssh -c arcfour -o Compression=no -x"

# Remote account
USER="zerochaos"
HOST="zerolab.net"
REMOTEHOST="${USER}@${HOST}"

# Enable or disable snapshot
SNAPSHOT="true"
# Auto-rotate (days)
SDAYS="15"

# Destination folder, snapshot directory
DEST_point="/home/zerochaos/www/"
SDIR="snapshot"
SNAPSHOT_dir="${DEST_point}${SDIR}/`date +'%Y-%m-%d.%Hh%Mm'`"

# Take the list from the same folder where the script is called
DIR=$(dirname "$0")
LISTFOLDERS=$DIR/backup.txt
LISTEXCLUDES=$DIR/exclude.txt
STRDEL="# begin of [do not delete this string]"
# -------------------------------------------- end of [Configurable settings]

# -------------------------------------------- begin of [Do not touch this section]
# If no arguments
if [ $# = 0 ]; then
    while read FOLDER; do
        if [ -n "$FOLDER" ] && [ "$FOLDER" != "$STRDEL" ]; then
            FOLDERNAME="`echo "$FOLDER" | awk -F/ '{ print $NF }'`"
            # Options for rsync
            if [ $SNAPSHOT = "true" ]; then
                OPTIONS="-Sazq --bwlimit=3840 --delete --exclude-from=$LISTEXCLUDES --backup --backup-dir=$SNAPSHOT_dir/$FOLDERNAME"
            else
                OPTIONS="-Sazq --bwlimit=3840 --delete --exclude-from=$LISTEXCLUDES"
            fi
            # Sync
            rsync $OPTIONS "${FOLDER}/" $REMOTEHOST:"${DEST_point}${FOLDERNAME}/"
        fi
    done < $LISTFOLDERS
    # Snapshot auto-rotate
    if [ $SNAPSHOT = "true" ]; then
        ssh $REMOTEHOST "find ${DEST_point}${SDIR}/ -type d -mtime +$SDAYS -exec rm -r {} \;" >/dev/null 2>&1
    fi
fi

# Generate public/private rsa key pair
ssh_keygen() {
    ssh-keygen -t rsa -b 4096
}

# Copy your public key on a remote machine
ssh_copy_id() {
    ID_FILE="${HOME}/.ssh/id_rsa.pub"

    if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then
      GET_ID="$GET_ID ssh-add -L"
    fi

    if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ]; then
      GET_ID="cat ${ID_FILE}"
    fi

    if [ -z "`eval $GET_ID`" ]; then
      echo "$0: ERROR: No identities found" >&2
      exit 1
    fi

    { eval "$GET_ID" ; } | ssh ${REMOTEHOST%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
}

ME=$(basename "$0")
print_help() {
    echo
    echo "Usage: $ME [OPTION...]"
    echo
    echo "Options:"
    echo "         -g     Generate public/private rsa key pair:"
    echo "                ssh-keygen -t rsa -b 4096"
    echo "         -c     Copy your public key on a remote machine:"
    echo "                ssh-copy-id $REMOTEHOST"
    echo "         -h     Help."
    echo
    echo "Example: $ME -gc"
    echo "Use both options, generate & copy."
    echo
}

while getopts ":gch" opt;
do
    case $opt in
        g) ssh_keygen;
            ;;
        c) ssh_copy_id;
            ;;
        h) print_help;
            ;;
        *) echo "Wrong option";
            echo "For help, use: $ME -h";
            exit 1
            ;;
        esac
done
# -------------------------------------------- end of [Do not touch this section]

Сохраните содержимое в файл backup.sh и дайте права на выполнение:

1
chmod -x backup.sh

Положите файлы backup.txt и exclude.txt рядом со скриптом. Формат файлов представлен ниже.

backup.txt:

1
2
3
4
5
# begin of [do not delete this string]
/home/zerochaos/www/msilab.net
/home/zerochaos/www/ruslab.net
/home/zerochaos/www/zerolab.net
# end of [do not delete this string]

exclude.txt:

1
2
3
4
5
6
temp/summ/checks/*
temp/sess/*
temp/tmp/*
template_cache/*
cache/*
logs/*

Параметры, поддающиеся настройке в backup.sh, вынесены в отдельную секцию и снабжены соответствующими комментариями. Для связи с backup-сервером будем использовать протокол ssh, для авторизации воспользуемся беспарольным вариантом, т.е. авторизацией по ключу. Для этого сгенерируем пару public/private rsa key. Выполним скрипт с ключом -g:

1
backup.sh -g

Отвечаем на заданные вопросы и переходим к копированию открытого ключа на удаленный сервер. Для этого выполним скрипт с ключом -c:

1
backup.sh -c

Вводим пароль пользователя, под которым будет происходить дальнейшая авторизация по ключу во время резервного копирования. Две команды выше можно объединить в одну, тогда операции будут выполнены последовательно:

1
backup.sh -gc

Остается добавить скрипт в cron:

1
2
#minute hour    mday    month   wday    command
00      1       *       *       *       sh /scripts/backup.sh

Вот и все, настраивайте список копируемых каталогов, список исключений, конечную директорию и параметры создания снапшотов. Надеюсь этот скрипт окажется для многих полезным и сэкономит много времени и сил. Всегда делайте backup’ы.

{ Нет комментариев }

HP ProLiant MicroServer N40L with 8GB Memory

Написал(а): ZeroChaos| Когда: 11 января, 2012 г.

Вот она! Домашняя серверная, ужатая до минимума. Наконец-то нормальная лаба с гипервизором на борту. HP ProLiant MicroServer N40L. 8ГБ оперативы, 4 корзины под HDD + 1, полученная с помощью конвертера 5.25″ ODD Bay to 3.5″ HDD Bay. Поддерживаются диски до 4ТБ, в теории можно собрать хранилище на 20ТБ (+ еще на eSata можно один повесить, получится 24ТБ o_O). Но, думаю, ограничусь 5×3ТБ, когда диски подешевеют, а случится это, похоже, не скоро, долго еще спекулировать будут.

{ Комментариев - 10 }

Nook Touch — System backup on the OS X

Написал(а): ZeroChaos| Когда: 3 сентября, 2011 г.

nook_touch_backup

1. Скачайте noogie.img

2. Введите в терминале:

1
diskutil list

или

1
df -h

И ищите свою карту памяти.

3. Размонтируйте карту памяти:

1
diskutil unmountDisk /dev/disk#

Где # — номер устройства, не используйте при размонтировании disk#s# (где s — slice). После чего будет сообщение об успешном размонтировании всех томов карты памяти.

4. Разворачиваем образ на карту памяти:

1
dd if=noogie.img of=/dev/rdisk# bs=1m

5. Загрузите свой NOOK Touch со вставленной только что приготовленной картой памяти. Подключите Nook по USB к компьютеру.

6. Введите в терминале:

1
diskutil list

или

1
df -h

И ищите карту памяти Nook.

7. Размонтируйте карту памяти:

1
diskutil unmountDisk /dev/disk#

8. Снимите образ:

1
2
cd ~/Desktop
dd if=/dev/rdisk# of=nook_touch_backup.img bs=1m

Где # — запомненный ранее номер устройства.

После чего получите образ с именем nook_touch_backup.img на своем рабочем столе. Удостоверьтесь, что размер образа получился 1958739968 байт.

Для восстановления из образа:

1
dd if=nook_touch_backup.img of=/dev/rdisk# bs=1m

{ Комментариев - 3 }

ASUS RT-N16 — покупка, обзор, впечатления

Написал(а): ZeroChaos| Когда: 22 марта, 2010 г.

Мультифункциональный беспроводной гигабитный маршрутизатор с поддержкой стандарта 802.11n, сегодня я немного пройдусь по этому флагману линейки беспроводных роутеров от фирмы ASUS. Не буду ходить вокруг да около, но продукт был мною куплен отчасти из гиковского любопытства, отчасти на замену моему ASUS WL-500W, который проработал у меня не так уж и много, всего каких-то 9 месяцев, отработав при этом безупречно — полугодовой аптайм тому подтверждение. Надо отдать должное инженерам ASUSTeK, что-что, а сетевое оборудование они делают хорошо, потому особое внимание и было уделено новой продукции этой же фирмы. Что же привлекло меня в этой новинке? Давайте посмотрим.

» Читать полностью »

{ Комментариев - 11 }

iptables в двух словах. Основы и пример конфига

Написал(а): ZeroChaos| Когда: 12 марта, 2010 г.

iptables тема объемная и с наскоку в ней разобраться рядовому пользователю непросто. Как ни крути, но без чтения полного мануала по iptables попросту не обойтись. Пример конфига конечно поможет, но немного, без знания основ трудно будет понять как работают цепочки правил. Не хотелось бы лезть в эти дебри, для этого есть хорошо переведенная документация. Так как меня не раз уже просили привести пример, я так и поступлю, пример будет с подробными комментариями, но для полного осознания что и как работает, обязательно обратитесь к манам по iptables. Впрочем, а почему нет? Небольшую вводную я все-таки дам. ;)

» Читать полностью »

{ Комментариев - 2 }

3proxy — компактный, зараза, но мощный. Установка и настройка 3proxy

Написал(а): ZeroChaos| Когда: 17 февраля, 2010 г.

Захотелось мне тут с работы получить доступ к своим двум локальным сетям, доступным из дома. Простой и легковесный прокси-сервер с авторизацией — неплохое решение, на мой взгляд. 3proxy многоплатформенный компактный прокси-сервер, просто находка, ну не ставить же для таких простых задач SQUID, в самом деле. Вот об установке и настройке 3proxy на домашнем сервере мы и поговорим сегодня. Постарался сделать комментарии в конфиге как можно более подробными.

» Читать полностью »

{ Комментариев - 53 }

Настройка nginx от начала и до конца. Ubuntu/Debian. nginx + PHP + spawn-fcgi + XCache. Пошаговая инструкция

Написал(а): ZeroChaos| Когда: 4 января, 2010 г.

Apache хороший веб-сервер, распространенный, легко настраиваемый, но потребляющий немереное количество ресурсов сервера. Рано или поздно веб-мастера начинают задумываться о переходе на более легковесный веб-сервер, как правило это те, у кого высоконагруженные проекты, либо обладатели VDS/VPS серверов с ограниченными ресурсами. О настройке хорошо известного, который находится у многих на слуху, веб-сервера nginx с поддержкой PHP, я и хотел бы сегодня поговорить. Необходимо развеять миф у новичков о сложности настройки связки nginx + PHP. Не все так страшно, как многие это представляют. Сегодня я наглядно покажу начинающим администраторам, как собрать самую свежую версию nginx + spawn-fcgi.

Так как nginx не имеет своего модуля для работы с PHP, а сам PHP по умолчанию не может работать в режиме FastCGI, то для связи с nginx нужен посредник, в нашем случае посредником будет выступать spawn-fcgi.

Стоит немного пояснить, зачем это нужно. Само по себе создание процесса FastCGI прямо в веб-сервере имеет несколько недостатков: процесс FastCGI может быть запущен только локально, имеет те же права, что и веб-сервер, а так же имеет ту же base-dir, что и веб-сервер.

Как только Вы начнете использовать отдельный FastCGI сервер, чтобы снять нагрузку с веб-сервера, Вы сможете контролировать процесс FastCGI внешними программами, такими как spawn-fcgi.

spawn-fcgi используется, чтобы запустить FastCGI процесс в своём окружении, выставить ему user-id, group-id и сменить корневую директорию (chroot).

Приступим.

» Читать полностью »

{ Комментариев - 9 }

Wine 1.1.5 — установка из исходников в Ubuntu

Написал(а): ZeroChaos| Когда: 24 сентября, 2008 г.

Wine 1.1.5

Вышел очередной релиз Wine 1.1.5, но в бинарном виде до сих пор доступна только версия 1.0. Остаётся только установить из исходников, этот мини-HowTo для совсем новичков, которые никогда не устанавливали программы из исходных кодов. Сейчас Вы увидите, что в этом нет ничего сложного, приступим.

» Читать полностью »

{ Комментариев - 5 }

Настройка DNS сервера bind9. Ubuntu/Debian. Пошаговая инструкция

Написал(а): ZeroChaos| Когда: 28 августа, 2008 г.

Сегодня мы поговорим о настройке, пожалуй, самого популярного DNS сервера bind9. Следуйте инструкции, и у Вас всё получится, в этом нет ничего сложного. В этом примере Вы увидите как формируются файлы зон и проследите процесс простой настройки, не вдаваясь при этом в подробности. Это лишь небольшое HowTo, призванное помочь Вам понять принцип работы DNS сервера. Если же Вы настраиваете DNS сервер на шлюзе в сегменте Вашей локальной сети, то в конце статьи Вы увидите как сделать Ваш DNS сервер кэширующим, что позволит существенно сократить время повторного запроса к NS серверам, ведь посещённые адреса будут браться из Вашего локального кэша. Ну что ж, приступим.

» Читать полностью »

{ Комментариев - 25 }