Рабоче крестьянское резервное копирование под windows

Постановка задачи Допустим, вы системный администратор в малой/средней (да чего уж там, иногда даже большой) компании, перед которым стоит задача организации резервного копирования файлового сервера...

Постановка задачи

Допустим, вы системный администратор в малой/средней (да чего уж там, иногда даже большой) компании, перед которым стоит задача организации резервного копирования файлового сервера исключительно с помощью подручных средств. Или вы продвинутый пользователь, которому небезразлична судьба хранящихся на вашем жестком диске файлов.

Пусть задача будет звучать следующим образом:

  1. Необходимо организовать автоматическое резервное копирование определенных файлов компьютера на отдельный носитель.
  2. Компьютер работает под управлением Windows версий 7 / 2008 или более поздней.
  3. Объем данных большой, поэтому копирование должно поддерживаться как полное, так и дифференциальное.
  4. Д.б. возможность копировать любые файлы, в т.ч. системные, заблокированные на чтение и т. п.
  5. Сторонним платным софтом пользоваться категорически не хочется (ну, допустим, мы стеснены в средствах, а эти ваши торренты — не наш путь! Или религия не позволяет. Или миллион других причин.), а лучше вообще обойтись без любого стороннего софта, пользуясь лишь возможностями ОС .

Немного подумав, еще расширим список хотелок:

  1. Как продолжение предыдущего пункта, формат архива также должен быть открытым и распространенным, чтобы в случае чего его без проблем открыть откуда угодно с помощью чего-угодно
  2. Более того, он должен быть таким, чтобы из любого, даже дифференциального архива, можно было бы без труда вытащить любой файл, не распаковывая для этого весь архив.
  3. Глубина архивации должна настраиваться (что называется, backup rotate).
  4. Было бы неплохо также с архивом сохранять дескрипторы безопасности NTFS.
  5. И вообще, хочется максимальной расширяемости и настраиваемости, если завтра возникнет желание нагородить дополнительный функционал.

Что ж, требования сформулированы, дело за малым – спланировать и реализовать всё остальное.

Выбор средств

Поскольку сторонние средства мы решили отметать, то как такового выбора технологий у нас почти не остается:

  • Алгоритмический язык и командлеты – Powershell (хотя тут при желании можно и VBScript)
  • Доступ к файлам через службу теневого копирования тома (VSS)
  • Формат архива – Zip
  • Механизм копирования только измененных файлов – архивный бит файловой системы
  • Автоматизация запусков – встроенный планировщик
  • ПО архивации – ?

Несморя на то, что через пользовательский интерфейс Windows создать «Сжатую ZIP-папку» проще простого, в результате поиска встроенного аналога командной строки меня постиг облом №1. Для реализации, собственно, функции архивирования для оригинальной Windows из коробки, к сожалению, так или иначе требовалась либо доустановка NET Framework, либо сторонних командлетов Powershell, либо файлов из Resource Kit, либо чего-то еще.

Опробовав ряд вышеперечисленных вариантов меня постиг облом №2: на больших объемах архивируемых данных (начиная от пары сотен гигабайт) одни попросту вылетали, другие съедали всю память и начинали грузить сервер, третьи еще каким-то образом начинали чудить.

Глубоко вздохнув, приходится делать шаг в сторону от одного из вышеозначенных принципов и взять на роль архиватора готовое решение. С точки зрения опенсорсности и бесплатности опять же практически безальтернативно выбор падает на:

  • ПО архивации – 7-Zip

План алгоритма

Итак, алгоритм предельно прост: пишем сценарий на Powershell, который должен:

  1. Исходя из переданных параметров, создать теневую копию интересуемого тома.
  2. Получить к ней доступ из операционной системы.
  3. В случае дифференциальной/инкрементной резервной копии составить список измененных файлов.
  4. Заархивировать нужные файлы.
  5. По возможности заархивировать NTFS ACL
  6. Удалить теневую копию.
  7. В случае создания полной/инкрементной резервной копии – сбросить с файлов архивный бит.
  8. В случае создания полной копии удалить старые бэкапы (старше заданной глубины архивации).

Скрипт

Ходить вокруг да около тут незачем, сразу публикую готовый скрипт:

Итоговый скрипт backup-files.ps1

##################################################################################################
# Скрипт резервного копирования данных v0.9b
# 25-12-2014
# Accel
##################################################################################################
#
#Поддерживаются полные и дифференциальные копии (на основе архивного атрибута файлов)
#
#Системные требования: 
#	Windows 7+, 2008+
#	Установленный архиватор 7-Zip (тестировалось на версии 9.30b)
#
#За один запуск скрипта возможно резервное копирование лишь с одного диска
#
#NTFS-полномочия на данный момент не сохраняются (определяется возможностями архиватора)
#
#Скрипт должен запускаться от пользователя, имеющего доступ к архивируемым файлам (с правами SYSTEM, Backup Operator и т.п.)

$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue"

##################################################################################################
#Начало блока переменных
##################################################################################################

#Название задания архивирования
#Используется в именовании архива и ссылки на теневую копию
#Должно отвечать правилам именования файлов, наличие пробелов не рекомендуется, т.к. не тестировалось
#Пример: $ArchiveTaskName="DiskE"
$ArchiveTaskName="DiskE"

#Путь до диска-источника резервного копирования 
#Перечень целевых папок этого диска определяется отдельно
#Пример: $SrcDrivePath="D:"
$SrcDrivePath="D:"

#Путь до целевого диска 
#Пример: $BackupDrivePath="E:"
$BackupDrivePath="E:"

#Полный путь до файла со списком папок для архивирования на диске-источнике
#Пример: $SubfoldersToBackupFile = "E:Backupsrc_dirs.txt"
#	* Каждая строка данного файла должна содержать одну папку, которую мы хотим включить в архив
#	* Путь д.б. относительным, т.е. не содержать буквы диска.
#	* Иными словами, если одна из папок резервного копирования у нас D:FilesFilesToBackup, то в файле должна быть строка FilesFilesToBackup
#	* Кодировка - ANSI
$SubfoldersToBackupFile = "E:Backupsrc_dirs.txt"

#Путь до временного файла-списка файлов для архивации:
#Пример: $BackupFilesList = "E:Backupbackup-filelist.txt"
$BackupFilesList = "E:Backupbackup-filelist.txt"

#Путь до целевой папки с архивами (В ней не должно быть никаких других файлов, иначе rotation их может удалить! Также лучше не использовать корень диска, а создать хоть одну подпапку.)
#Пример: $ArchiveDstPath = $BackupDrivePath+"BackupScript backup"
$ArchiveDstPath = $BackupDrivePath+"BackupScript backup"

#Полный путь до файла журнала задания
#Пример: $ScriptLogFile = "E:BackupBackupFiles.log"
$ScriptLogFile = "E:BackupBackupFiles.log"

#Путь до исполняемого файла архиватора 7-Zip
#Пример: $SevenZipExecutablePath = "C:Program files7-Zip7z.exe"
$SevenZipExecutablePath = "C:Program files7-Zip7z.exe"

#Количество дней хранения архива (отсчет ведется с последнего полного бэкапа)
#Пример: $BackupRotationIntervalDays=22
$BackupRotationIntervalDays=22

##################################################################################################
#Конец блока переменных
##################################################################################################


$BackupFilesListTmp = $BackupFilesList+".tmp"
$backuptype=$args[0]
$VSCPath = $BackupDrivePath+"VSC_"+$ArchiveTaskName+"_$(Get-Date -format "yyyyMMdd")"

Start-Transcript -path $ScriptLogFile

$LogVars=1

if ($LogVars=1) {
	echo "================================================================="
	echo "ArchiveTaskName: $ArchiveTaskName"
	echo "SrcDrivePath: $SrcDrivePath"
	echo "BackupDrivePath: $BackupDrivePath"
	echo "SubfoldersToBackupFile: $SubfoldersToBackupFile"
	echo "BackupFilesList: $BackupFilesList"
	echo "ArchiveDstPath: $ArchiveDstPath"
	echo "ScriptLogFile: $ScriptLogFile"
	echo "SevenZipExecutablePath: $SevenZipExecutablePath"
	echo "VSCPath: $VSCPath"
	echo "BackupRotationIntervalDays: $BackupRotationIntervalDays"
	echo "================================================================="
	}

echo "Backup started at: $(Get-Date)"

function BackupFull {
	echo "Backup type: full"
	
	#Создаем теневую копию
	$s1 = (gwmi -List Win32_ShadowCopy).Create($SrcDrivePath, "ClientAccessible")
	$s2 = gwmi Win32_ShadowCopy | ? { $_.ID -eq $s1.ShadowID }
	$d  = $s2.DeviceObject + ""

	#Создаем на нее ярлык (удалим предыдущий, если остался после прерванной архивации)
	CMD /C rmdir "$VSCPath"
	cmd /c mklink /d $VSCPath "$d"

	#Составляем список папок для архивации
	"" | Set-Content $BackupFilesList
	Get-Content $SubfoldersToBackupFile | Foreach-Object {CMD /C "echo $VSCPath$_* >> $BackupFilesList" }
	
	#Создаем массив параметров для 7-Zip
	$Arg1="a"
	$Arg2=$ArchiveDstPath+""+$ArchiveTaskName+"_$(Get-Date -format "yyyy-MM-dd")_`(Full`).zip"
	$Arg3="-i@"+$BackupFilesList
	$Arg4="-w"+$ArchiveDstPath
	$Arg5="-mx=3"
	$Arg6="-mmt=on"
	$Arg7="-ssw"
	$Arg8="-scsUTF-8"
	$Arg9="-spf"

	#Зипуем
	& $SevenZipExecutablePath ($Arg1,$Arg2,$Arg3,$Arg4,$Arg5,$Arg6,$Arg7,$Arg8,$Arg9)
	
	Remove-Item $BackupFilesList

	#Если теневые копии имеют необъяснимую тенденцию копиться, лучше удалим их все
	#CMD /C "vssadmin delete shadows /All /Quiet"
	
	#Или можно удалить только конкретную созданную в рамках данного бекапа
	"vssadmin delete shadows /Shadow=""$($s2.ID.ToLower())"" /Quiet" | iex

	#Удаляем ярлык
	CMD /C rmdir $VSCPath

	#Снимаем архивный бит
	Get-Content $SubfoldersToBackupFile | Foreach-Object {CMD /C "attrib -A -H -S $SrcDrivePath$_* /S /L" }
	
	#делаем rotation
	echo "Rotating old files..."
	CMD /C "forfiles /D -$BackupRotationIntervalDays /S /P ""$ArchiveDstPath"" /C ""CMD /C del @file"""
	}
	
function BackupDiff {
	echo "Backup type: differential"
	
	#Создаем теневую копию
	$s1 = (gwmi -List Win32_ShadowCopy).Create($SrcDrivePath, "ClientAccessible")
	$s2 = gwmi Win32_ShadowCopy | ? { $_.ID -eq $s1.ShadowID }
	$d  = $s2.DeviceObject + ""

	#Создаем на нее ярлык (удалим предыдущий, если остался после прерванной архивации)
	CMD /C rmdir $VSCPath
	cmd /c mklink /d $VSCPath "$d"
	
	#Включаем UTF-8
	CMD /C "chcp 65001 > nul"
	
	#Составляем список файлов, измененных с момента предыдущей архивации
	"" | Set-Content $BackupFilesList
	Get-Content $SubfoldersToBackupFile | Foreach-Object {CMD /C "dir $VSCPath$_ /B /S /A:A >> $BackupFilesList" }
	
	CMD /C "chcp 866 > nul"
	
	$SearchPattern="^"+$BackupDrivePath.Substring(0,1)+":\"
	
	#Отрезаем букву диска, иначе 7-zip при архивации по списочному файлу глючит, находя несуществующие дубли
	#(Get-Content $BackupFilesList) -replace $SearchPattern,'' > $BackupFilesListTmp
	Get-Content $BackupFilesList | ForEach-Object { $_ -replace $SearchPattern,"" } | Set-Content ($BackupFilesListTmp)
	
	Remove-Item $BackupFilesList
	Rename-Item $BackupFilesListTmp $BackupFilesList
	
	#Поскольку имя диска в путях удалили, нужно перейти в нужную директорию
	cd $BackupDrivePath

	#Создаем массив параметров для 7-Zip
	$Arg1="a"
	$Arg2=$ArchiveDstPath+""+$ArchiveTaskName+"_$(Get-Date -format "yyyy-MM-dd")_`(Diff`).zip"
	$Arg3="-i@"+$BackupFilesList
	$Arg4="-w"+$ArchiveDstPath
	$Arg5="-mx=3"
	$Arg6="-mmt=on"
	$Arg7="-ssw"
	$Arg8="-scsUTF-8"
	$Arg9="-spf"

	#Зипуем
	& $SevenZipExecutablePath ($Arg1,$Arg2,$Arg3,$Arg4,$Arg5,$Arg6,$Arg7,$Arg8,$Arg9)
	
	Remove-Item $BackupFilesList

	#Если теневые копии имеют необъяснимую тенденцию копиться, лучше удалим их все
	#CMD /C "vssadmin delete shadows /All /Quiet"
	
	#Или можно удалить только конкретную созданную в рамках данного бекапа
	"vssadmin delete shadows /Shadow=""$($s2.ID.ToLower())"" /Quiet" | iex

	#Удаляем ярлык
	CMD /C rmdir $VSCPath
	}
	
if ($backuptype -eq "diff") {
	BackupDiff | Out-Host
	}
elseif ($backuptype -eq "full") {
	BackupFull | Out-Host
	}
else {
	echo $backuptype
	echo "None backup type parameter passed! Usage: scriptname.ps1 [ full | diff ]"
	}

echo "Backup finished at: $(Get-Date)"

Stop-Transcript

Для работы скрипта мы должны заполнить выделенный в начале файла блок переменных (пути архивации, глубина хранения архивов) и создать файл с папками-источниками, например, такой:

Файл папок-источников src_dirs.txt

bases
files
photos
users/profiles

Использование

Складываем всё в одну папку, и всё, можно запускать в Powershell. Единственный параметр — тип запуска [full | diff], определяет полный/дифференциальный способ копирования.

PS E:Backup> .backup-files.ps1 full

Убедившись, что всё работает (или поправив параметры, если нет) создаём задание в планировщике (отдельно для полного копирования и отдельно для дифференциального).

Экспортированный пример задания: scheduled-backup-task-full.xml

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2014-10-14T23:14:45.0256428</Date>
    <Author>PCAccel</Author>
  </RegistrationInfo>
  <Triggers />
  <Principals>
    <Principal id="Author">
      <UserId>PCUser</UserId>
      <LogonType>S4U</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>true</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:WindowsSystem32WindowsPowerShellv1.0powershell.exe</Command>
      <Arguments>-Command "& {E:Backupbackup-files.ps1 full}"</Arguments>
    </Exec>
  </Actions>
</Task>

Ну вот, в целом, и всё, можно настроить, представить папку с архивами системе мониторинга наличия резервных копий (если есть) и забыть.

Замечания

  • Для корректной работы (в первую очередь для создания теневой копии) powershell должен быть запущен от имени администратора (или «с наивысшими привилегиями» в терминологии планировщика заданий).
  • По идее способ также годится для горячего консистентного резервного копирования хоть баз MSSQL, хоть MS Exchange (при установке соотв. shadow copy providers, которые к подобному софту идут в комплекте), хотя конкретно в этих случаях удобнее пользоваться встроенными средствами.
  • Инкрементным резервным копированием я не пользуюсь (много хлопот найти удаленный файл среди кучи инкрементных архивов), но если возникнет потребность, то он получается буквально комбинированием нескольких срочек из полного и дифференциального блоков скрипта.
  • Здесь также не реализован механизм сохранения ACL (формат zip, да и 7zip не поддерживают хранение дескрипторов безопасности в архиве; RAR умеет, но это уже не свободное ПО, что сильно противоречит условиям задачи). В случае необходимости дескрипторы можно сохранять в файл встроенными утилитами типа icacls и добавлять полученный дамп в создаваемый архив.
  • Увы и ах, алгоритм не подходит для XP/2003. Сложность возникает на моменте создания ярлыка на теневую копию (в этих ОС нет утилиты mklink, а по-быстрому обойти эти грабли у меня не вышло).

P.S.

Перед необходимостью изобретать свой велосипед автор за несколько лет

намучался

перепробовал большое количество разнообразного бесплатного готового ПО со похожей функциональностью (Cobian Backup, COMODO Backup и др.). Вдоволь находившись по разнообразным встроенным в упомянутый софт граблям, было принято решение написать что-то своё. На данный момент описанное решение успешно работает на серверах (Windows Server 2008 R2) и рабочих станциях (Windows 7 и Windows 8.1).

Самая крупная создаваемая полная резервная копия на данный момент составляет 1 Тб в исходных файлах, в архиве – 350 Гб. При архивировании с зеркала SAS (7200) на такой же локальный Volume-диск (оба работают внутри vSphere, будучи подключенными как RDM Passthrough-диски) операция занимает около 6 часов, что в условиях задачи является вполне приемлемым результатом.

Резервное копирование важной информации — полезная привычка в системном администрировании, позволяющая сэкономить ценное время. Рассмотрим как избавить себя от мучений в час “X” с помощью компонента Windows Server Backup.

Windows Server Backup — встроенный компонент семейства операционных систем Windows Server предназначенный для создания резервных копий ОС и работы с ними.

Приступаем к настройке.

Из меню Пуск запускаем Диспетчер серверов.

Диспетчер серверов в меню Пуск | Serverspace

В открывшемся окне “Диспетчер серверов” выбираем “Добавить роли и компоненты”.

Резервное копирование Windows Server | Serverspace

В открывшемся окне мастера добавления ролей и компонентов, в левой части окна, выбираем “Тип установки”, в правой — “Установка ролей или компонентов” и кликаем по кнопке “Далее”.

Резервное копирование Windows Server | Serverspace

В обновленном окне, на этапе выбора сервера, выбираем из пула текущий. Нажимаем “Далее”.

Резервное копирование Windows Server | Serverspace

В обновленном окне мастера, в левой его части, кликаем по “Компоненты”. В центральной части окна, в основной части окна, выбираем “Система архивации данных Windows Server”. Кликаем по кнопке “Далее”.
Система архивации данных Windows Server | Serverspace

На этапе подтверждения кликаем по кнопке “Установить”.

Резервное копирование Windows Server | Serverspace

Дожидаемся окончания процесса установки.

Резервное копирование Windows Server | Serverspace

По окончании, нажимаем кнопку “Закрыть”.

Окно “Диспетчер серверов” остается открытым. В верхней правой части выбираем “Средства”. В открывшемся меню, выбираем “Система архивации данных Windows Server”.

Резервное копирование Windows Server | Serverspace

В открывшемся окне “wbadmin”, в левой части, выбираем “Локальная архивация“, в правой части станут доступны действия с локальной архивацией. Настроим резервное копирование по расписанию — выбираем “Расписание архивации…”.

Резервное копирование Windows Server | Serverspace

В открывшемся окне мастера расписания активации, на начальном этапе, кликаем по кнопке “Далее”.

Резервное копирование Windows Server | Serverspace

Следующим шагом следует выбрать  тип конфигурации — весь сервер или что-то конкретное. Создадим копию всего сервера. Кликаем “Далее”.

Резервное копирование Windows Server | Serverspace

Теперь необходимо определиться сколько раз в день делать резервную копию и в какое время. Слишком часто это делать не рекомендуется. Также, лучше настроить резервное копирования на конец рабочего дня или задолго до его начала. В нашем случае пусть будет 21:00. Нажимаем “Далее”.

Теперь выбираем “куда” будет сохраняться резервная копия. Параметр имеет смысл оставить рекомендуемый системой. При желании, можно выбрать и сохранение в сетевую папку, но важно помнить, что процесс будет сильно зависеть от скорости локальной сети. Жмем “Далее”.

Резервное копирование Windows Server | Serverspace

В обновленном окне мастера, следует выбрать диск назначения. Кликаем по кнопке “Показать все доступные диски…”. Предварительно вам необходимо создать дополнительный диск для бэкапов в разделе «Настройки» вашего сервера, вкладка «Диски».

В открывшемся дочернем окне, будут показаны другие (несистемные) диски. Устанавливаем галочку напротив необходимого носителя.
Важно! Резервные копии рекомендуется выполнять на физический, а не логический диски.

Резервное копирование Windows Server | Serverspace

Выбранный диск добавится в общий список доступных дисков. Отмечаем его галкой и нажимаем кнопку “Далее”.

Резервное копирование Windows Server | Serverspace

Система уведомит о намерении отформатировать выбранные ранее диски. Отвечаем нажатием на кнопку “Да”.

Резервное копирование Windows Server | Serverspace

На этапе подтверждения операций, если все действия корректны, нажимаем кнопку “Готово”.

Резервное копирование Windows Server | Serverspace

После непродолжительного форматирования диска программа уведомит об успешном создании события в планировщике, а также укажет дату первого выполнения резервного копирования. Кликаем по кнопке “Закрыть”.

Резервное копирование Windows Server | Serverspace

Результат выполнения резервного копирования можно посмотреть в центральной части окна wbadmin.

Рассмотрим восстановление из резервной копии.

Все в том же окне wbadmin, в правой его части, кликаем по “Восстановление…”.

Резервное копирование Windows Server | Serverspace

В окне мастера восстановления, выбираем место хранения архива с резервной копией. Выбираем “Этот сервер” и кликаем по кнопке “Далее”.

Резервное копирование Windows Server | Serverspace

Следующим шагом выбираем дату создания резервной копии и кликаем “Далее”.

Резервное копирование Windows Server | Serverspace

В обновленном окне, предстоит выбрать “Что нужно восстановить”, например, “Файлы и папки”. Нажимаем “Далее”.

Резервное копирование Windows Server | Serverspace

Выбираем все файлы и каталоги, располагающиеся на диске “C:”. Нажимаем кнопку “Далее”.

Резервное копирование Windows Server | Serverspace

На следующем этапе необходимо определиться что делать с файлами, если таковые уже существуют. Выбор данного действия остается за системным администратором. Мы будем перезаписывать эти файлы. Кликаем “Далее”.

Резервное копирование Windows Server | Serverspace

На следующем шаге проверяем каталоги, которые будут восстановлены. В случае, если все указано верно, кликаем “Восстановить”.

Резервное копирование Windows Server | Serverspace

Дожидаемся окончания процесса восстановления. По окончании нажимаем кнопку “Закрыть”.

Важно! Процесс может занять некоторое время.

Резервное копирование Windows Server | Serverspace

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

“COELO TONANTEM CREDIDIMUS JOVEM (REGNARE)

— Когда гром на небе загремел, мы уверовали в Юпитера правящего”

(Гораций)

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

Такая доступность данных делает их более уязвимыми для вирусов, шифровальщиков и хакеров. Поэтому стоит проверить свою защиту от злоумышленников и принять меры, если у вас не все в порядке.

Для тех кто торопится: краткий список того что нужно сделать для защиты базы 1С

  • Настроить регулярное резервное копирование на компьютере, а лучше в облако (и никому не давать пароль).
    1. Регулярно проверять работает ли бекап:
      • копии делаются,
      • копию можно развернуть и она работоспособна.
  • Установить антивирусную защиту.
    1. Можно и бесплатную, лучше чем ничего.
    2. Платные продукты:
      • обычно защищают от большого числа угроз,
      • быстрее выпускают обновления для защиты от новых вирусов,
      • дают право воспользоваться техподдержкой в случае проблем.
  • Ограничить доступ к файлу базы данных на уровне пользователей Windows (операционной системы).
  • Перестраховаться от отказа оборудования:
    1. Иметь источник бесперебойного питания (ИБП), который защитит от неожиданного отключения света.
      • Такое выключение легко переноситься компьютером, но часто ломает базу 1С из-за её сложности. Ремонт базы естественно стоит денег.
    2. Вовремя менять жесткий диск, который подает признаки скорой поломки:
      • заметно ухудшилась скорость работы,
      • компьютер перезагружается сам без видимых причин,
      • происходят ошибки при работе с файлами, программами.

Список не полный, при изучении конкретной ит-системы можно предложить дополнительные меры защиты. Но и выше описанные шаги реализованы не у всех, при этом их внедрение не стоит особых усилий и защищает в 90% случаев.

По нашему опыту встречи с вирусом-шифровальщиком (3 клиента) и взломом сделанным человеком в ручную (один клиент) — сумма выкупа за базу данных составляет от 10-15 тыс до 50+ тысяч рублей. Настроить резервное копирование и купить хороший антивирус на все компьютеры выйдет тысяч десять или меньше.

За консультацией обращаться:

  • +7 (8512) 223-221 (г. Астрахань)(удаленно работаем по России с странам СНГ).
  • info@1-sys.ru
  • чатик в правом углу сайта.

Заказать консультацию

Как защитить базу 1С

За годы работы в IT-индустрии, страшилки на тему потери данных уже успели набить оскомину. Истории эти всегда разные — то вирусы, то поломка компьютера, то перепады напряжения, но все их объединяет одно — звонят грустные люди и повествуют о том, что у них пропала важная информация. Годами создаваемая база данных или архив личных фотографий — принципиальной разницы нет. Как нет и способа предотвратить все, что может произойти с компьютером. Существует статистика, согласно которой более 6% компьютеров в год по разным причинам теряют данные. В организациях дело обстоит еще серьезнее — более 40% компаний, столкнувшихся с полной потерей информации закрывается насовсем.

Что же делать, если ту самую соломку никак нельзя подстелить там, где упадешь? Возможно, стоит взять парашют, а применительно к нашей теме — делать резервные копии. Тем более, что способов это сделать сегодня — предостаточно.

С чего же начать? Для начала следует определить что копировать, как и куда. Начнем по порядку.

Что должно бэкапиться

По своему опыту могу твердо сказать, что по-настоящему важная информация хранится буквально в 2-3 папках. Остальное, как правило, представляет собой то, что и не используется, и удалить руки не доходят. Поэтому базы данных и рабочие документы мы отделяем, и располагаем по максимально простому пути, например D:Работа. Этот нехитрый принцип сильно упростит дальнейшие шаги.

Как делать бекап

Здесь, по сути, все сводится к трем вариантам: ручное, автоматическое и смешанное копирование. Можно просто скидывать нужные данные на флешку, можно воспользоваться специальным софтом. Я лично предпочитаю последний способ — доверить рутину программе, но периодически проверять ее и делать ручное копирование.

Куда копировать важную информацию

Очень важный момент. Всю жизненно важную информацию стоит копировать на другой компьютер или в облачное хранилище. Мы уже как-то упоминали о вирусах-шифровальщиках. Так вот если эта зараза просочится на машину где хранятся сами данные и резервные копии — пиши пропало, даже если используется 2 разных жестких диска. Поэтому наш выбор — другой комп в сети, SkyDrive, Яндекс.Диск, DropBox. О надежности упомянутых интернет-сервисов можно спорить долго, но при отсутствии выделенного сервера это то, что надо.

Автоматический бекап

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

  • acronis.com — Один из лидеров жанра. Позволяет не заморачиваться и копировать всю систему целиком.
  • cobiansoft.com — Очень любопытная программа. Использует расписания, сжатие и сразу несколько типов копирования.
  • norton.com — Работает с собственным облаком, шифруя данные.

Кроме этих вариантов, существуют конечно и другие, причем некоторые весьма экзотические. Например один из обывателей Хабра предложил Рабоче-крестьянское резервное копирование под Windows. Но это уже относится скорее к кулибиновщине.

После того, как выбор сделан, и программа настроена, остается лишь иногда проверять ее работу, и (сплевывая через левое плечо) делать дополнительные копии куда-нибудь на внешний диск. Они нам пригодятся. Обязательно. Это не вопрос вероятности, а скорее вопрос времени. К таким вещам, как бэкап, нельзя подходить легкомысленно. Именно определенная доля паранойи (закон Мерфи не раз себя доказывал) позволит “перекреститься” раньше, чем “гром грянет”.

Вирус-шифровальщик 1С

Бекап

На днях услышали одну печальную историю — администратор магазина, сев утром за свой компьютер, не обнаружил там ни 1С, ни своих документов, вообще ничего, кроме записки на рабочем столе «Чтобы восстановить данные переведите 5000 на такой-то счёт».

Не знаем, как они вышли из ситуации, этот магазин у нас не обслуживается. Но и с нашими клиентами подобные случаи тоже бывали:

  • часто, при неправильном выключении компа, теряется небольшое количество данных — обычно служебных, несколько раз очищалась табличная часть в документах «отчет о розн. продажах». Т.е. со склада все списано, но если открыть документ, в нем будет пусто. Естественно, перепровести такой документ не получится.
  • худшее, что может случиться при неправильном выключении — «Ошибка формата потока». Базу восстановить практически невозможно. Встречалось два-три раза — восстановились из бэкапа.
  • однажды сервер просто украли через окно, взломав решетку. Вместе с бэкапами и ключом. Т.к. рег.анкету от 1С клиент найти не смог, пришлось покупать 1С заново. Бэкапы нашлись только двухмесячной давности — восстанавливали бухгалтерский учет вручную по распечаткам.
  • несколько раз ломались жесткие диски или слетал Windows. Данные обычно восстановливали, обратившись в специализированную контору или использовав бэкапы.

Самое простое и основное — делать копии на том же диске, что и база данных

  • однажды базу тоже стерли, взломав компьютер через интернет. Требовали выкуп, чтобы вернуть обратно. Нашли бэкап. Обидно в этой ситуации то, что базы именно стирают — выкачиваеть её через интернет слишком долго. Поэтому деньги платить нет смысла — ничего все-равно не восстановят.
  • у нас у самих полетел один из дисков в RAID-0 массиве — 500Гб данных потеряли, хорошо, что наиболее важные архивировались на отдельный диск.
  • однажды мало того, что полетел жесткий диск на сервере клиента, так еще и выяснилось, что отдельный USB-диск, на который делались бэкапы полетел месяцем ранее. Просто никто не заметил. Повезло, что базы удалось оперативно восстановить с полетевшего жесткого диска.

Случается такое очень редко, поэтому многие успешно годами работают без копий и малейшей заботы о них. Даже многие из тех, кому не повезло все-равно не делают копий — менталитет.

Защититься от потери данных на 100% довольно сложно, но возможно, если подходить к делу со здоровой долей паранойи. Лично я просто пытаюсь проиграть в голове возможную ситуацию. Например «что будет, если у нас откажет жесткий диск» или «что будет, если украдут сервер целиком». Это напрягает конечно, но куда деваться. 

  • Самое простое и основное — делать копии на том же диске, что и база данных.
  • Можно параллельно копировать на второй жесткий диск — на случай если первый сломается
  • Плюс, сейчас доступны облачные хранилища (dropbox, Яндекс-диск, Google-drive) — если подключить его к папке, в которую делаются бэкапы, они будут выгружены в интернет. Их можно восстановить, даже если все ваши диски будут потеряны.
    • Раньше, вместо этого, мы дополнительно копировали архив по сети на соседний комп.
  • Случаи, когда злоумышленник намеренно удаляет данные, самые тяжелые — здесь здоровой долей паранойи уже не обойтись:)
    • Но можно, например, делать копии на отдельный комп, который обязательно выключать на ночь.
    • Еще у дропбокса есть отличная функция — можно в течение месяца восстановить удаленные с диска файлы.

Главное помнить, что настроить автоматическое копирование базы мало. Нужно еще и следить затем, что базы действительно копируются. Иначе, столкнувшись со сломанной базой можно обнаружить, что автоматический бэкап, который настраивали год назад, давно уже не работает.

Сценарии защиты базы 1С

За последние два месяца случаи потери критически важной информации стали до безобразия частыми. Причем, если раньше такие инциденты были связаны с поломкой компьютеров, то теперь в моду вошли вирусы-шифровальщик и хакеры собственной персоной. Схема чаще всего одна — злопыхатель получает доступ к машине с базой данных, улучают момент, когда никто не работает, и запаковывают всю важную информацию в архив под паролем, подбирать который бесполезно. После этого оставляют записку с требованием выкупа в размере 30 килорублей, и удаляются восвояси. На следующий день пользователи обнаруживают пропажу, и начинается эпопея с восстановлением утерянного. Что характерно, восстановить удается далеко не все, так как резервные копии обычно тоже оказываются зашифрованными.

На волне этих леденящих душу историй, в застенках нашей IT-лаборатории родилась идея запилить такую систему бэкапов, чтоб ни одна зараза не подкопалась.

Задача (сферическая и непременно в вакууме) следующая: сделать так, чтобы в максимально возможном количестве случаев, лаконично описанных законом Мерфи, у клиента была бы резервная копия критически важной информации хотя бы за предыдущий день.

Как показала практика, старина Кобиан с этим не особо справляется. Даже если копирование настроено на другой компьютер в сети, или вообще в какой-нибудь ЯндексДиск. Беда в том, что вирус вроде WannaCry шифрует все, что попадется ему под руку, включая доступные сетевые ресурсы. Как вариант можно скидывать копии на запароленный FTP-сервер, или менять расширения у архивов, но это мало поможет в случаях с человеком, получившим доступ к компу. Бездушный вирус в отличие от сумрачного гения человека не способен на такие ухищрения как анализ ситуации. Хакер же, может покопаться по таким местам, куда свет солнца не заглядывает, и выудить даже хитро припрятанные файлы.

Чтобы максимально усложнить задачу всей этой нечисти, решили сделать так:

  1. Кобиан (или любая другая программа резервного копирования) делает копии по расписанию, и складирует их в папку на этом же компе.
  2. К папке с архивами настраиваем запароленный доступ (только те, кто знает пароль, могут получить доступ к архивам, да и то только на чтение)
  3. На другом компе в сети настраиваем нехитрый сценарий, который по такому же расписанию будет забирать бэкапы к себе.
  4. Profit!

Фишка в том, что конечный пункт назначения резервных копий находится там, где и вирус не достанет, и человек искать не будет.

Бекап

А если вдобавок перекрыть подступы из интернета на дублирующий комп, получим более чем устойчивую систему. Главное, периодически проверять, что архивы создаются. И если какие-нибудь виртуальные флибустьеры все-таки запаролят/зашифруют важную информацию с целью получения выкупа, мы в ответ помашем гордо вытянутым средним пальцем.

Понравилась статья? Поделить с друзьями:
  • Работает ли защитник windows 10 если есть антивирус
  • Рабочий стол для ребенка windows 10
  • Радио рекорд на рабочий стол windows 10
  • Рабочая станция что это за служба windows 10
  • Работает ли youtube на windows xp