Таких не бывает. Точнее, есть в природе, но это уже не SOHO, а промышленность. Любой ИБП максимум 50 минут, чаще 10-20.
Разъёмы для защиты телефона/LAN от перенапряжения. Там простой разрядник.
Пример подходящего вам блока — Ippon Smart Winner 1000. Там как раз и разъёмчик такой имеется. Але є одне "але": он уже не выпускаеся, и проработает с вашей аппаратурой около получаса.
Не жрут ваши компьютеры 750 и 1150, не беспокойтесь. Сервачок, если без видео, ватт 100 кушает. Игровой 150-300 в зависимости от режима.
Ctrl+Shift+Esc
И по вкладкам…
Что за тупизм?
Дописал скрипт полного бэкапа по сценарию.
Абсолютные пути для FreeBSD, вдумчиво переделываются под Linux.
Подключаем внешний или сетевой диск, # gbackup и ждём…
#!/bin/sh # $Id: gbackup 9 2015-05-21 19:11:33Z denis $ ##### Скрипт общего бэкапа # Конфигурационные файлы разместить в /usr/home/<user>/.config/gbackup # Основной файл скрипта разместить в /usr/sbin, сделать исполняемым # files_common.txt — общий бэкап, новый подменяет старый # files_unic.txt — уникальный бэкап, новый пишется с другой версией по времени # Формат конфигов: /полный/путь/до/директории|субдиректория_группа, # Копируется именно последняя директория пути в субдиректорию # Решётка отключает строку # gbackup.conf содержит настройки в формате ИМЯ_ПАРАМЕТРА=ЗНАЧЕНИЕ # MEDIA_PATH=/mnt/flash путь к смонтированному носителю # На носителе создаётся структура: # <mountpoint>/BACKUP/UNIC/<time> # <mountpoint>/BACKUP/COMMON # <mountpoint>/BACKUP/COMMON_BAK # Перед началом COMMON переименовывается в COMMON_BAK # В процессе, после копирования директории в COMMON, старая версия удаляется из COMMON_BAK # @TODO Сделать опциональное архивирование DATE=`date "+%Y%m%d_%H%M"` COMMENT1=$1 COMMENT2=$2 #echo ${COMMENT2} #echo ${COMMENT1} SAVEIFS=$IFS # устанавливаем разделитель строк IFS=' ' MEDIA_PATH=`/bin/cat ~/.config/gbackup/gbackup.conf | /usr/bin/grep MEDIA_PATH | /usr/bin/awk -F= '{print $2}'` # Преобразуем переносы Windows, сливаем во временный файл /bin/cat ~/.config/gbackup/files_unic.txt | sed -e 's/'"`printf '\015'`"'$//' > /tmp/${DATE}.unic FILES_UNIC_LIST=`/bin/cat /tmp/${DATE}.unic | /usr/bin/grep -v \# | /usr/bin/grep \/ | sort -u` rm -f /tmp/${DATE}.unic # Преобразуем переносы Windows, сливаем во временный файл /bin/cat ~/.config/gbackup/files_common.txt | sed -e 's/'"`printf '\015'`"'$//' > /tmp/${DATE}.common FILES_COMMON_LIST=`/bin/cat /tmp/${DATE}.common | /usr/bin/grep -v \# | /usr/bin/grep \/ | sort -u` rm -f /tmp/${DATE}.common BACKUP_PATH_EXIST=`/bin/ls -l ${MEDIA_PATH} | grep BACKUP | awk '{print $9}'` if [ "${BACKUP_PATH_EXIST}" = "" ]; then echo Директория BACKUP отсутствует, создаём. /bin/mkdir -p ${MEDIA_PATH}/BACKUP fi COMMON_PATH_EXIST=`/bin/ls -l ${MEDIA_PATH}/BACKUP | grep COMMON | grep -v COMMON_BAK | awk '{print $9}'` if [ "${COMMON_PATH_EXIST}" = "" ]; then echo Директория COMMON отсутствует, создаём. /bin/mkdir -p ${MEDIA_PATH}/BACKUP/COMMON fi if [ "${COMMON_PATH_EXIST}" = "COMMON" ]; then echo Директория COMMON присутствует. COMMON_BAK_PATH_EXIST=`/bin/ls -l ${MEDIA_PATH}/BACKUP | grep COMMON_BAK | awk '{print $9}'` if [ "${COMMON_BAK_PATH_EXIST}" = "COMMON_BAK" ]; then echo Директория COMMON_BAK присутствует, удаляем. /bin/rm -rf ${MEDIA_PATH}/BACKUP/COMMON_BAK fi echo Переименовываем COMMON в COMMON_BAK. mv ${MEDIA_PATH}/BACKUP/COMMON ${MEDIA_PATH}/BACKUP/COMMON_BAK #Строка выше просто переименовывает, а ниже переносит всё из одной директории в другую. На кой сочинял, не знаю #find ${MEDIA_PATH}/BACKUP -name 'COMMON' -print0 | xargs -0 -J % mv % ${MEDIA_PATH}/BACKUP/COMMON_BAK echo Создаём новую COMMON /bin/mkdir -p ${MEDIA_PATH}/BACKUP/COMMON fi UNIC_PATH_EXIST=`/bin/ls -l ${MEDIA_PATH}/BACKUP | grep UNIC | awk '{print $9}'` if [ "${UNIC_PATH_EXIST}" = "" ]; then echo Директория UNIC отсутствует, создаём. /bin/mkdir -p ${MEDIA_PATH}/BACKUP/UNIC fi /bin/mkdir -p ${MEDIA_PATH}/BACKUP/UNIC/${DATE} # Создаём директорию с именем "дата время" for DIR_UNIC in ${FILES_UNIC_LIST}; do echo --------------------------------------------------------- DIR_UNIC_SOURCE=`echo ${DIR_UNIC} | awk -F\| '{print $1}'` DIR_UNIC_SUBDIR=`echo ${DIR_UNIC} | awk -F\| '{print $2}'` echo ${DIR_UNIC_SOURCE} \=\> ${DIR_UNIC_SUBDIR} UNIC_SUBDIR_EXIST=0 # сбасываем маркер наличия директории UNIC_SUBDIR_EXIST_LIST=`/bin/ls ${MEDIA_PATH}/BACKUP/UNIC/${DATE}/` #Список имеющихся директорий for CURRENT_UNIC_SUBDIR in ${UNIC_SUBDIR_EXIST_LIST}; do echo CURRENT_UNIC_SUBDIR=${CURRENT_UNIC_SUBDIR} if [ "${CURRENT_UNIC_SUBDIR}" = "${DIR_UNIC_SUBDIR}" ]; then echo "Директория ${DIR_UNIC_SUBDIR} найдена!" UNIC_SUBDIR_EXIST=1 break 1 fi done if [ "${UNIC_SUBDIR_EXIST}" = "0" ]; then echo Директория ${DIR_UNIC_SUBDIR} отсутствует, создаём. /bin/mkdir -p ${MEDIA_PATH}/BACKUP/UNIC/${DATE}/${DIR_UNIC_SUBDIR} fi echo Копирование ${DIR_UNIC_SOURCE} /bin/cp -Rfx "${DIR_UNIC_SOURCE}" ${MEDIA_PATH}/BACKUP/UNIC/${DATE}/${DIR_UNIC_SUBDIR} done for DIR_COMMON in ${FILES_COMMON_LIST}; do echo --------------------------------------------------------- DIR_COMMON_SOURCE=`echo ${DIR_COMMON} | awk -F\| '{print $1}'` # Полный путь копируемой директории BACKUP_SUBDIR=`echo ${DIR_COMMON_SOURCE} | awk -F \/ '{print $NF}'` # Копируемая директория (относительная) DIR_COMMON_SUBDIR=`echo ${DIR_COMMON} | awk -F\| '{print $2}'` # Субдиректория-группа, в которую копируются директории. echo "Копируемая директория " ${BACKUP_SUBDIR} echo DIR_COMMON_SUBDIR субдиректория-группа,куда копируются директории: echo ${DIR_COMMON_SOURCE} \=\> ${DIR_COMMON_SUBDIR} COMMON_SUBDIR_EXIST=0 # сбасываем маркер наличия директории COMMON_SUBDIR_EXIST_LIST=`/bin/ls ${MEDIA_PATH}/BACKUP/COMMON/` #Список имеющихся директорий for CURRENT_COMMON_SUBDIR in ${COMMON_SUBDIR_EXIST_LIST}; do echo CURRENT_COMMON_SUBDIR=${CURRENT_COMMON_SUBDIR} if [ "${CURRENT_COMMON_SUBDIR}" = "${DIR_COMMON_SUBDIR}" ]; then echo "Директория ${DIR_COMMON_SUBDIR} найдена!" COMMON_SUBDIR_EXIST=1 break 1 fi done if [ "${COMMON_SUBDIR_EXIST}" = "0" ]; then echo Директория ${DIR_COMMON_SUBDIR} отсутствует, создаём. /bin/mkdir -p ${MEDIA_PATH}/BACKUP/COMMON/${DIR_COMMON_SUBDIR} fi echo Копирование ${DIR_COMMON_SOURCE} /bin/cp -Rfx "${DIR_COMMON_SOURCE}" ${MEDIA_PATH}/BACKUP/COMMON/${DIR_COMMON_SUBDIR} # Берём текущий путь бэкапа COMMON и трансформируем в COMMON_BAK CURRENT_COMMON_BAK_SUBDIR=`echo ${MEDIA_PATH}/BACKUP/COMMON/${DIR_COMMON_SUBDIR} | sed 's/\/BACKUP\/COMMON\//\/BACKUP\/COMMON_BAK\//g'` CURRENT_COMMON_BAK_SUBDIR=`echo ${CURRENT_COMMON_BAK_SUBDIR}/${BACKUP_SUBDIR}` # Удалить надо это! echo Удаляем из предыдущего бэкапа: ${CURRENT_COMMON_BAK_SUBDIR} /bin/rm -rf ${CURRENT_COMMON_BAK_SUBDIR} done IFS=$SAVEIFS # Возвращаем разделитель строк
# $Id: files_common.txt 9 2015-05-21 19:11:33Z denis $ # Общий бэкап, новый подменяет старый /etc|config_etc /usr/local/etc|config /usr/home/denis/.config/deadbeef|config /usr/home/denis/.netbeans|config /usr/home/denis/.baresip|config /usr/home/denis/.config/ssh|config /usr/home/denis/.config/lxpanel|config /usr/home/denis/.config/mc|config /usr/home/denis/.config/openbox|config /usr/home/denis/.config/xfe|config /usr/home/denis/.kde4/share/apps/krusader|config /usr/home/denis/.claws-mail|data /usr/home/denis/.mucommander|config /usr/home/denis/.purple|data /usr/home/denis/.Skype|config /usr/home/denis/.config/geany|config /usr/home/denis/Store/BACKUP/sites/dev|backup /usr/home/denis/Store/BACKUP/sites/current|backup /usr/home/denis/Store/CDimg|backup /usr/home/denis/Store/soft|backup #/usr/home/denis/Store/Музыка|data
# $Id: files_unic.txt 9 2015-05-21 19:11:33Z denis $ # Уникальный бэкап, новый пишется с другой версией по времени /usr/home/denis/.thunderbird|data /usr/home/denis/Desktop|data /home/denis/Documents|data /usr/home/denis/.avatars|data /usr/home/denis/Mail|data /usr/home/denis/NetBeansProjects|data /usr/home/denis/.ssh|data /usr/home/denis/.mozilla|data
# $Id: gbackup.conf 9 2015-05-21 19:11:33Z denis $ SOME_PARAM=somevalue MEDIA_PATH=/mnt/flash
Не могу сейчас найти очень наглядное видео, как два разработчика ставят и настраивают сайт с нуля в реальном времени. Один через web интерфейс, другой с помощью drush. Первый ходит по ссылкам, скачивает, переключает окна/вкладки, ждёт после каждого клика а второй набрал несколько команд и сидит довольный.
Комрады, кто начал пользовать Drupal. Сразу ставьте и осваивайте drush, заметно облегчает и ускоряет манипуляции.
С таким подходом быстрее и практичнее купить железку и нанять админа для настройки.
Andrei_IW, не обижайтесь, у вас каша в голове.
Любой роутер *nix-based, т.е. консоль. Но у многих промышленных изделий есть веб-интерфейс.
По поводу конкретно Mikrotik:
Webfig
Winbox
Покупайте и не парьте мозг.
Кстати, эту RouterOS я ставил на древнючий тазик Pentium1, достойный помойки, и он тоже великолепно управлялся GUI из-под Windows, прикиньте. Т.е. при желании можно ничего не покупать, а собрать из гамна и палок.
Andrei_IW, а вы щупали Микротик? Там в комплекте GUI под Windows идёт.
Вчера наткнулся (можно с SQLite использовать) http://s2cms.ru/
Демо панели admin:admin http://demo.s2cms.ru/_admin/