Содержание
Резервные копии файлов на скорую руку для SOHO
В Интернет доступно множество средств для резервного копирования файлов с Windows серверов (ПК), однако, хочется чего-то быстрого в настройке и надежно работающего. Чтобы не нужно было поднимать серверную часть (сервер архивов) и пр.
Естественно, для крупных компаний c большими объемами данных использование производительных клиент-серверных систем резервного копирования — это необходимость, а для небольших — перебор. При смене ИТ специалистов (аутсорсера) в SOHO процесс передачи этого процесса должен быть максимально упрощенным. Документация минимальная. Соответственно, самый простой вариант — это максимально короткий командный файл.
Есть штатный инструмент от Microsoft robocopy, который закрывает большинство проблем с резервными копиями, но имеет пару недостатков: ротация файлов и компрессия. При организации резервного копирования важно обеспечить приемлемую глубину архивирования, по дням, ежемесячно и т.п.
DayOfWeek для robocopy
robocopy копирует файлы в нужную папку. Соответственно, для создания ежедневных резервных копий в течении недели достаточно создать в нужном месте папку с названием дня недели. Глубина резервного копирования — неделя, со следующей недели начнется ротация (замещение файлов новыми).
Я не знаю быстрого способа в cmd файле получить день недели. Поэтому для меня простой способ решения задачи — приложение, которое создает в нужном месте папку с названием дня недели, либо с более сложной структурой по некоторому шаблону. Программу назвал DayOfWeek, буквально несколько строк кода. Скачать её можно здесь: DayOfWeek. Если нужны исходники — пишите 2af@mail.ru.
При запуске программы без ключей — она возвращает в консоль название дня недели на английском.
Одна строчка cmd файла позволяет использовать возвращенное значение в cmd файле:
for /f %%i in (‘C:\Backup\DayOfWeek.exe -md %RootBackupPath%’) do set DayOfWeek=%%i
где в переменной %RootBackupPath% указан сетевой путь до шары. Например, последовательность:
- SET RootBackupPath=\\FileServer\Backup\Files\
- for /f %%i in (‘C:\Backup\DayOfWeek.exe -md %RootBackupPath%’) do set DayOfWeek=%%i
- SET BackupPath=%RootBackupPath%%DayOfWeek%
объединяет путь к расшаренной папке с днем недели. Например, при запуске в пятницу результат такой: \\FileServer\Backup\Files\Friday
Таким образом получается ротация в пределах недели, поскольку при переходе на следующую неделю содержимое файлов в папках соответствующих дню недели будет актуализироваться командой /MIR robocopy. При этом резервирование будет происходить максимально быстро, поскольку копироваться будут только новые файлы.
Чтобы использовать более глубокую архивацию, например, хранить резервные копии в течении месяца, можно использовать механизм шаблонов. В этом случае иерархия папок будет создаваться в соответствии с шаблоном. Ключи:-t [Template] — задать шаблон для создания папки и выдачи в консоль имени.
-g [Globalization] — установить глобализацию для названий месяцев, дней недели и пр. По умолчанию: en-US.
Шалобны могут использоваться различные: https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
Добавил также шаблон: WWWW — день недели месяца.
Запуск DayOfWeek.exe -t «MMMM\\WWWW\\dddd» вернет в консоли строчку вида [Название месяца]\[Номер недели]\[Название дня недели]. Например, для пятницы 2 недели января: January\2\Friday.
Командный cmd файл (есть в zip архиве) для решения задачи создания ежедневных копий:
SETLOCAL
SET SourcePath=D:\BASES\
SET RootBackupPath=\\FileServer\Backup\Files\
SET LogDir=C:\Backup\Log\
for /f %%i in (‘C:\Backup\DayOfWeek.exe -md %RootBackupPath%’) do set DayOfWeek=%%i
SET BackupPath=%RootBackupPath%%DayOfWeek%
echo %BackupPath%
call robocopy.exe %SourcePath% %BackupPath% *.* /mir /copy:DAT /dcopy:T /W:0 /R:0
Обратите внимание на указание в командном файле полного пути для файла C:\Backup\DayOfWeek.exe. Это важно при запуске cmd файла из-под штатного scheduler. Также в scheduler корректно пропишите рабочую папку где находится командный файл.
Сжатие файлов robocopy
К сожалению, robocopy не поддерживает сжатие файлы «на лету». Если копирование происходит на сервер/ПК под управлением Windows, то для решения проблемы достаточно использовать динамическую компрессию на папку в настройках Windows.
Помимо компрессии можно использовать также дедупликацию, если копирование идет на сервер под Windows 2012 или ПК под Windows 10 с активированной дедупликацией.
Поскольку файлы меняются незначительно от копии к копии, дедупликация существенно уменьшит место занимаемое на диске под резервные копии.
Если резервная копия создается на NAS, на котором отсутствует опция сжатия и дедупликации, то единственный вариант решения задачи — запустить сжатие файлов с сервера/ПК на приемнике уже после выполнения резервного копирования с помощью 7zip или других утилит. Естественно, это весьма тяжелая операция, поскольку при таком сжатии:
- Сначала происходит копирование файла на ПК с которого запущена команда архивации.
- Сжатие файла.
- Копирование на приемник.
- Удаление исходного файла на приемнике.
Права доступа
Важный момент — права доступа для запуска cmd файл в scheduler. Понятно, что в случае если авторизация доменная достаточно в scheduler запустить командный файл под учеткой с правами достаточными для записи на приемнике. Чем более гранулированные права — тем лучше, чтобы при запуске на файловом сервере трояна-шифровальщика резервная копия не была затронута.
Если копирование производится на NAS, который не поддерживает доменную авторизацию, достаточно добавить на сервер локального пользователя с именем совпадающим с учеткой на приемнике и с тем-же паролем. В этом случае доступ к файловой шаре на приемнике будет достаточным для копирования файлов.
Похожее
Запись опубликована в рубрике IT опыт, IT рецепты. Добавьте в закладки постоянную ссылку.
Источник: http://www.bizkit.ru/2017/01/15/3969/
Резервное копирование папок и восстановление: Бэкап папки Windows
Backup Software / Функции бэкапа / Резервное копирование папок
Резервная копия папок (бэкап папок) позволяет сохранить пользовательские данные не отдельными файлами, а в виде целых каталогов, и, вместе с бэкапом файлов, составляет основу резервного копирования. Handy Backup позволяет выполнять бэкап папки по расписанию.Скачать Handy BackupВерсия 7.19.0 от 8 ноября 2018, 164 MBВ этой короткой инструкции мы покажем, как сделать бэкап папок на локальной машине с помощью плагина Computer.
Бэкап сетевых папокСетевое решение Handy Backup Server Network – отличная программа бэкапа папок на удалённых сетевых машинах. Вы можете как выполнять бэкап папки Windows, так и создавать копии папок, находящихся в сети на Linux-машинах или на обслуживаемых устройствах NAS.Восстановление папки из резервной копии – операция. Обратная бэкапу папки. Для организации восстановления выполните следующие действия:
Версия 7.19.0 от 8 ноября 2018. 164 MBПрограмма резервного копирования Handy Backup. 800 RUB за лицензию Handy Backup StandardРешение Standard обеспечивает все нужные функции для бэкапа папок на компьютере пользователя и восстановления резервных копий папкиПо умолчанию (если не выбрана функция шифрования), Handy Backup сохраняет все данные бэкапа в исходных форматах. Это открывает пользователю возможности на прямую использовать файлы и папки из резервных копий:
Совет: вы можете использовать резервное копирование папок для сохранения, размножения (репликации), копирования, клонирования или зеркалирования исходного содержимого в «горячем» режиме!Вы можете сохранять ваши пользовательские папки в резервных копиях на всех современных носителях данных:
Handy Backup полностью управляет процессом бэкапа папок, позволяя использовать множество возможностей и режимов для автоматизации, ускорения и упрощения резервного копирования. К числу самых важных возможностей такого рода относятся:
Скачать Handy BackupВерсия 7.19.0 от 8 ноября 2018, 164 MBРезервная копия папок на вашем компьютере с помощью Handy Backup – простой путь сохранить все нужные данные в надёжном месте! Попробуйте бэкап папок, загрузив прямо сейчас 30-дневную бесплатную версию программы! |
Источник: https://www.handybackup.ru/rezervnoe-kopirovanie-papok.shtml
Бэкап данных посредством 7-zip через консоль с очисткой
Зачастую, необходимо делать бэкапы данных, при этом делать это таким образом, чтобы старые бэкапы автоматически удалялись, для экономии места на диске. Описанный ниже способ копирования данных применим на любой машине под управлением Microsoft Windows, тестировалось на Windows версий XP, Vista, 2003 server и 2008 server.
Нам потребуется архиватор 7-zip и немного времени для работы в Notepad (блокнот – стандартный текстовый редактор Windows)
Сам бэкап будет проходить посредством bat файла, который будет запускать архивацию данных 7-zip через консоль. После архивации будет выполняться проверка существующих бэкапов по имени для удаления старых бэкапов и, соответственно, экономии места на диске. Имена архивов, в свою очередь, будут иметь имена, соответствующие дате архивации.
Итак, начнём:
- backup.bat @ECHO OFF SETLOCAL SET PATH=%PROGRAMFILES%\7-zip;%PATH% set now=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2% #выше описанным мы задаём параметры именования файлов архивов, то есть наши бэкапы. А именно получается формат гггг-мм-чч. echo %DATE% echo %TIME% echo Start WORK 7z a -xr@exclude.txt -t7z -mx9 -ssw F:\Backup\Work\bkp-%now%.7z C:\Work -scsWIN #Указываем архиватору, что в F:\Backup\Work нужно поместить архив, содержащий папку C:\Work echo %DATE% echo %TIME% echo Start clearing cscript /nologo clear.vbs Work #Строка выше описывает, к какой папке с бэкапом применить скрипт очистки, для удаления старых архивов. echo Stop clearing echo %DATE% echo %TIME% pause #Выше описанный код запускает скрипт очистки от старых бэкапов.
- Теперь берёмся за создание скрипта очистки.clear.vbs dim fso : Set fso = CreateObject(«Scripting.FileSystemObject») dim strRootPath : strRootPath = fso.GetAbsolutePathName(«.») Dim ToDay : ToDay = Date() Dim Prev_days : Prev_days = DateAdd(«d», -3, Date()) #Внимание! предыдущая строка описывает от какого числа нужно удалять старые бэкапы. В коде приведён пример удаления всех бэкапов, которые созданы ранее, чем сегодня — 3 дня. Соответственно, цифру 3 можете поменять на любую другую, в зависимости от потребностей. Важно то, что будут удалены бэкапы, созданные (сегодня – Х дней) назад. Set objArgs = WScript.Arguments Set dFolder = fso.GetFolder(strRootPath & «\»& objArgs(0)) dim regEx : Set regEx = New RegExp With regEx .Pattern = «bkp-(([0-9]{4})-([0-9]{2})-([0-9]{2})).7z$» .IgnoreCase = True .Global = True End With For Each dFile In dFolder.Files set matches = regEx.execute(dFile.Name) if matches.Count > 0 then Set match = matches(0) If match.SubMatches.Count > 0 Then sDateTime = match.SubMatches(0) dtDates = CDate(sDateTime) If dtDates < Prev_days Then WScript.Echo dFile.Name & " removed." dFile.delete End If End If end if Next
- Последний файл, который нам потребуется – это файл exclude.txt. В него можно добавить пути, маски и конкретные файлы, которые не надо добавлять в архив. Разумнее всего добавить туда маски мультимедийных файлов и картинок, так как они плохо зажимаются и, как правило, являются нерабочими файлами, если мы говорим о бэкапе сетевой папки в крупной фирме, где обязательно работники будут обмениваться музыкой, видео и фотографиями.exclude.txt *.avi *.mp3 *.MP4 *.MP2 *.MPG *.MPEG *.VOB *.MKV *.tmp *.zip *.mov *.exe *.rar
Основные действия мы произвели, остались только заключительные шаги. А именно: установить архиватор 7-zip, свежая версия всегда доступна на сайте разработчика по ссылке http://www.7-zip.org, программа является бесплатной.
Теперь добавляем наш backup.bat в задания Windows (для ХР это ПУСК?Панель управления?Назначение задания, для Windows server 2008 это Диспетчер сервера?Конфигурация?Планировщик заданий?Библиотека планировщика заданий), назначаем удобное время выполнения. ГОТОВО.
Важные примечания по использованию этого способа бэкапа данных
Файлы backup.bat, cleat.vbs и exclude.txt должны находиться в одной папке, причём в папке с бэкапами. А именно, если рассматривать наш пример, то в F:/Backup.
Пути, описанные в файле, backup.bat должны быть введены только латиницей. Если пути будут содержать символы кириллицы, то бэкап не будет проходить. Имена файлов и папок в директорий для архивации не имеют значения, но путь до папки архивации ОБЯЗАТЕЛЬНО должен быть на латинице.
Можно делать бэкапы любых дисков/файлов/папок, но файлы не должны использоваться в момент архивации, соответственно, если вы хотите сохранять базы sql, то вам сначала придётся остановить службу sql-сервера. Также следует заметит, если вы делаете бэкап файлов в сетевой папке пользователей, то нужно делать его в нерабочее время, чтобы пользователи вашей сети не использовали файлы, помеченные для архивации.
Плюсы данного способа
Бэкап данных с общей сетевой папки, а также возможность восстановить эти данные всегда очень важны для стабильной работы сети. Если вам необходимо поддерживать недельную актуальность бэкапа, то достаточно настроить скрипт очистки бэкапов так, чтобы он удалял архивы только старше недели.
Также одним из достоинств данного способа является то, что сами бэкапы будут занимать значительно меньше места на диске, в отличии от простого копирования данных.
Есть возможность держать список исключений для архивации, что несомненно позволит сократить место, занимаемое архивами, а также делать копии только необходимых данных.
Минусы данного способа
К сожалению, данный способ не применим для бэкапа папок с русскоязычными именами (вложенные папки и файлы значения не имеют). Также процесс архивации весьма ресурсоёмкий, а также занимает время. Соответственно, ресурсы сервера должны позволять это сделать как можно быстрее.
Однако, нынешний прогресс в сфере компьютеров и комплектующих настолько далеко зашел, что этот небольшой минус можно и опустить.
4-ядерного процессора с тактовой частотой 2Ггц и 4ГБ памяти на компьютере вполне хватит, чтобы провести подобный бэкап общей сетевой папки, содержащей в большей степени рабочие документы (WORD, EXCEL, POWER POINT), объёмом свыше 12 Гигабайт, примерно за полтора часа. Полученный архив будет объёмом в 2 Гигабайта.
Если слово «фотография» перевести с древнегреческого, то получиться «светопись». Люди всегда хотели сохранить лучшие моменты своей жизни и поэтому очень давно научились делать фотографии. Свадебные фотографы дарят людям память о лучших моментах их жизни. На каждой свадьбе должен быть фотограф, чтобы после нескольких лет освежить воспоминания.
Случайные 7 статей:
Источник: https://itshaman.ru/articles/174/bekap-dannykh-posredstvom-7-zip-cherez-konsol-s-ochistkoi
Duplicity – экстремально простой способ резервного копирования
Как гласит старинная шутка, системные администраторы делятся на две группы: те, которые не делают бэкапы, и те, которые уже делают бэкапы. Систем резеревного копирования существует великое множество, от простейшего самописного скрипта до огромных монстров ценой в “боинг”. Все системы нужны для разных целей и выполняют разные задачи.
Основная, самая известная и популярная система в мире unix и linux – это, безусловно, bacula. Умеет bacula очень много — сложные расписания и политики хранения, шифрование данных и клиент-серверного трафика, управление операциями “на ходу”, десятки способов упаковки и проверки данных. Полный список возможностей bacula занимает несколько страниц мелкого текста.
Основной минус бакулы находится ровно там, где находится ее плюс. Внедрение и настройка бакулы — это приключение, как минимум, на неделю. Документации очень много (но ее все равно не хватает). Бакула состоит из 4 самостоятельных компонентов (director, storage, filedaemon, console), каждый из которых настраивается и живет отдельно.
Все эти компоненты имеют сложные взаимоотношения и должны быть доступны друг другу напрямую, что тоже жизнь не облегчает. Элементарный конфиг bacula легко может весить десятки килобайт (и bacula очень трепетно относится к опечаткам в конфиге — он в лучшем случае вообще не прочитается, а в худшем сервис упадет).
В случае, если нужно делать резервные копии с одного-двух серверов — bacula — явный оверкилл. Вместо сложного комбайна нужен простой и понятный молоток. И такой молоток есть — он называется duplicity.
Duplicity — это очень просто. Это одна-единственная команда, которая запускается на том сервере, откуда будут копироваться данные. Все, что она может:
- сделать резервную копию. Резервная копия пакуется в блоки (назывются тома), и, по желанию, шифруются. Резервная копия может быть или полной, или инкрементальной. Уровень определяется возрастом копии — если последняя полная копия старше определенного возраста — будет сделана полная, если нет — инкрементальная копия.
- отправить резервную копию на удаленный сервер. Удаленный сервер может быть rsync, ftp, scp, s3 (вариантов много). Можно хранить прямо в файловой системе. Устройства хранения (ленточные библиотеки, дисковые массивы) – не поддерживатюся.
- найти расходждения между каталогом и определенной версией бекапа. Полезно, чтобы понять, что изменилось с момента бэкапа.
- показать список файлов в бэкапе.
- восстановить файлы из бэкапа (или весь бэкап целиком).
- почистить удаленный сервер от старых бэкапов.
На этом функционал duplicity заканчивается. Ничего сложного, головоломного, неочевидного. Система, понятная, как кирпич.
Установка и настройка
Duplicty входит в пакет с одноименным названием, и устанавливается традиционно для вашей операционной системы:
#debian, ubuntuapt-get install duplicity #centos, redhat, fedorayum install duplicity
Теперь нужно решить, куда будут отправляться пакеты. Duplicty не может работать с удаленным сервером самостоятельно — в зависимости от типа удаленного сервера ему потребуется тот или иной пакет. Сам duplicity только “дирижирует процессом”. Самые ходовые типы серверов и пакеты:
- ftp, ftps (ftp over TLS): ncftp
- rsync: rsync
- s3 (aws S3, openstack swift, ceph object gateway, minio): boto
Если планируется шифровать и/или подписывать бэкап — нужно сгенерировать gpg-ключ. Шифровать бэкап рекомендуется, если нет доверия серверу хранения. Правило хорошего тона гласят, что доверия нет никогда и никому. Помните о том, что бэкап, по сути – отложеное по времени нарушение безопасности. Ключ генерируется вполне традиционым способом:
Параметры ключа (размер, алгоритм) менять не обязательно, они вполне разумны. После окончания генерации GPG вернет идентификатор ключа. Его так же можно посмотреть вот так:
gpg —list-keys /root/.gnupg/pubring.gpg————————pub 2048R/F6822D5F 2017-01-28uid Paul I Rudnitskiy (bck server) sub 2048R/292EB891 2017-01-28
ID нам чуть дальше пригодится, рекомендую его запомнить.
Так же очень рекомендуется сделать разеревную копию GPG-ключа. Если бэкап зашифрован — потеря ключа автоматически означает потерю возможности восстановить данные из бэкапа. Выгрузим ключ, чтобы сохранить его в надежное место:
gpg —export-secret-keys -a F6822D5F > backup.asc
Резервное копирование
Общий принцип — duplicity [args] {source} {destination}. Аргументов множество, ниже я приведу пример и распишу, что означает каждый. Проще всего сделать shell-скрипт с командой и типовыми аргументами, чтобы не вспоминать их каждый раз
duplicity —verbosity notice \ —encrypt-key «F6822D5F» \ —full-if-older-than 14D \ —num-retries 3 \ —asynchronous-upload \ —volsize 100 \ —archive-dir /var/tmp/.duplicity \ —log-file /var/log/duplicity.log \ —exclude «/var/lib/postgresql/9.5/main/archive» \ «/var/lib/postgresql/9.5/main/» \ «ftp://bckuser:[email protected]/pgsql»
На что обратить внимание:
- verbosity — уровень “говорливости” при работе. Рекомендуется info при отладке (показывает файлы и текущие операции) и notice в production (кратко сообщает о текущем этапе работы)
- encrypt-key — ID ключа для шифрования. Важен, если ключей несколько. Если шифровать не нужно — используйте аргумент —no-encryption. При шифровании gpg спросит пароль ключа шифрования. Побеждается или настройкой gpg-agent или созданием переменной PASSPHRASE с паролем.
- full-if-older-than — через срок после создания полной копии нужно сделать не инкрементальную, а снова полную копию. В данном примере — 14 дней.
- volsize — размер одного тома в мегабайтах. Каждый том пакуется и загружается на сервер отдельно, это отдельный файл.
- archive-dir — папка, где duplicity локально хранит метаданные (информацию о томах и их содержимом). Копия метаданных лежит на сервере. Если по какой-то причине метаданные пропадут — duplicity придется скачать копию метаданных с сервера перед началом бэкапа. Размер папки метаданных пропорционально зависит от количества файлов и количества бэкапов, так что стоит выделить ей побольше места.
- exclude — позволяет исключить папку из бэкапа. аргументов exclude может быть несколько.
- destination — последний аргумент, куда копируем данные. Задается в виде классического url. URL для копии в локальную файловую систему имеет вид file:///path/to/folder
Проверка состояния бэкапов на удаленном сервере:
duplicity collection-status «ftp://bckuser:[email protected]/pgsql» \ —archive-dir /var/tmp/.duplicity
Пример ответа:
NcFTP version is 3.2.5Local and Remote metadata are synchronized, no sync needed.Last full backup date: Fri Sep 15 04:10:03 2017Collection Status——————Connecting with backend: FTPBackendArchive dir: /var/tmp/.duplicity/c9edc22d8a99b972fdf4bd3cec26e19f Found 1 secondary backup chain.Secondary chain 1 of 1:————————-Chain start time: Thu Aug 31 04:10:03 2017Chain end time: Thu Sep 14 04:10:02 2017Number of contained backup sets: 15Total number of contained volumes: 252 Type of backup set: Time: Num volumes: Full Thu Aug 31 04:10:03 2017 137 Incremental Fri Sep 1 04:10:02 2017 6—————————-CUT—————————————————————— Found primary backup chain with matching signature chain:————————-Chain start time: Fri Sep 15 04:10:03 2017Chain end time: Fri Sep 29 04:10:03 2017Number of contained backup sets: 15Total number of contained volumes: 245 Type of backup set: Time: Num volumes: Full Fri Sep 15 04:10:03 2017 142 Incremental Sat Sep 16 04:10:02 2017 8—————————-CUT—————————————- Incremental Fri Sep 29 04:10:03 2017 7————————-No orphaned or incomplete backup sets found.
Duplicity не позволяет помечать бэкап как устаревший автоматически (retention в терминологии “взрослых” систем). Чистить ненужные бэкапы придется в ручном режиме:
duplicity —verbosity notice \—archive-dir /var/tmp/.duplicity \—force \remove-all-but-n-full 4 \»ftp://bckuser:[email protected]/pgsql»
Эта команда удалит все бэкапы старше 4 последних полных бэкапов. В примере выше мы делали полный бекап каждые 2 недели, то есть duplicity удалит бэкапы старше 2 месяцев (8 недель). Если убрать ключ —force – duplicity найдет старые бэкапы, но не будет их удалять — только выведет на консоль. Забывать о чистке не рекомендуется — место на сервере для резервных копий может неожиданно кончиться и оставить вас без свежих бэкапов. Выясняется это весьма болезненно.
Проверка и восстановление
Посмотрим файлы, которые у нас есть в бэкапе:
duplicity —archive-dir /var/tmp/.duplicity list-current-files \ «ftp://bckuser:[email protected]/pgsql»
Пример ответа:
NcFTP version is 3.2.5Local and Remote metadata are synchronized, no sync needed.Last full backup date: Sat Sep 29 04:10:03 2017Mon Oct 2 04:10:02 2017 .Mon Aug 29 21:07:04 2016 PG_VERSIONMon Oct 2 04:10:02 2017 backup_label————————CUT———————————
Команда выше покажет состояние на момент последнего бэкапа. Чтобы получить информацию из более старых бэкапов, нужно использовать ключ -t. К примеру, -t6D вернет информацию о бэкапе, сделаном 6 дней назад.
Восстановление данных выглядит ровно так же, как бэкап, нужно просто поменять местами source (откуда брать данные) и destination:
duplicity —verbosity notice \ —encrypt-key «F6822D5F» \ —archive-dir /var/tmp/.duplicity \ —log-file /var/log/duplicity.log \ «ftp://bckuser:[email protected]/pgsql» \ «/var/lib/postgresql/9.5/main/»
На что обратить внимание:
- Если нужно восстановить бэкап на определенную дату — выручает ключ -t
- Для восстановления определенного файла нужно использовать ключ —file-to-restore. Таких ключей может быть несколько.
- Восстановление возможно только в совершенно пустую папку
- Для восстановления duplicity вытащит с сервера резервных копий весь полный бэкап и все инкрементальные бэкапы с момента полного до точки восстановления. Места уйдет много.
Источник: https://prudnitskiy.pro/2017/09/30/duplicity/
Ротация файлов бэкапа
На первый взгляд, ротация бэкапов — задача не сложная.
Казалось бы, что может быть проще — сохранять строго определенное количество папок или архивов с бэкапом, именуя их с использованием даты.
На самом деле не все так просто. Первый вопрос, который возникает сразу — что произойдет если какие-то важные рабочие файлы какое-то продолжительное время не будут изменяться? Будет происходить «холостой» бэкап, а последующая ротация бэкапов через некоторое время приведет к тому, что все эти файлы в старых версиях бэкапов будут одинаковы.
Поэтому для разумного бэкапа лучше все-таки делать анализ резервируемых данных.
И одного простого скрипта, одинакового для всех, здесь может быть недостаточно.
Анализ резервируемых данных
Анализируя файлы бэкапа, нужно определится — какие из них будут меняться чаще, какие реже, и насколько важно хранить старые версии тех файлов, которые изменяются редко.
Кроме того нужно определить — получится ли разбить файлы на группы исходя из того чаще или реже они изменяются. И насколько это сложно реализуемо (разделены ли она по разным папкам и т.д.).
Лучше всего конечно было бы, если бы такие файлы находились в разных исходных папках. Если четкого разделения по папкам нет, то необходимо определить — насколько сложно выделить такие файлы по другим признакам — имени, дате или т.п.
Так же важно для анализа учитывать размер и количество файлов. Если файлов много и среди них присутствуют файлы большого размера, то отнестись к анализу необходимо более внимательно — необходимо будет видимо учитывать время бэкапа для большого количества файлов, а так же учитывать доступное место для файлов большого размера.
Пример разделения файлов на группы
Смоделируем ситуацию, когда у Вас в папке «Мои документы» есть папка с фотографиями, есть документы которые часто меняются и есть пару документов которые меняются редко, но есть вероятность того что старые версии могут когда-нибудь пригодится.
Для редко изменяемых документов можно конечно сразу делать новые версии прямо в рабочей папке, но надеяться на свою внимательность в этом вопросе опасно, и, кроме того, если речь идет о компьютере например членов Вашей семьи, то проконтролировать этот процесс будет сложно вдвойне.
Самым простым решением здесь было бы разбить все эти файлы на три условные группы (фотографии, простые документы, редко изменяемые важные документы), разложить их по разным папкам и создавать цепочку версий в бэкапах для каждой группы файлов индивидуально.
В этом случае, для фотографий может быть определена отдельная папка бэкапа, в которой достаточно хранить копию последней версии фото и «уходящие в прошлое» папки только с фотографиями которые например были удалены (т.е. не дублировать всю папку, а оставлять копии только тех файлов которые были удалены или изменены). См. здесь описание системы, которая позволяет делать избирательный отбор, сохраняя только удаленные и изменяемые файлы.
Для непредсказуемо изменяющихся файлов документов видимо имеет смысл сохранять их все без анализа, сделав цепочку папок с полным архивом длиннее (т.е. сохранять большее количество прошлых версий всей папки).
Для файлов, которых немного, и имена их точно известны (и точно известно, что они не будут меняться), можно настроить бэкап так, чтобы эти файлы выбирались и анализировались скриптом по именам — так же в отдельную папку с отдельной цепочкой версий и индивидуальной ротацией.
Т.е. в этом примере мы получаем не один общий бекап, в котором ротация старых версий всей папки бэкапа происходит для всех одинаково, а три разных цепочки бекапов, для каждой из которых ротация будет происходить индивидуально.
Итак:
- В бэкап-папках со старыми версиями фотографий (файлов большого размера) будут сохраняться только отдельные файлы, копируемые туда только после анализа изменений.
- Папки с бэкапами «непрогнозируемой кучи» будут скорее всего хранить общую копию для всех файлов сразу, и скорее всего цепочка бэкапов будет создаваться каждый день на заданный период в прошлое.
- Для редко изменяемых файлов у которых известны заранее имена, папки с их старыми версиями могут иметь большие промежутки времени между собой.
Таким образом не будет бессмысленного дублирования больших файлов (например фото), версии редко изменяемых файлов будут сохраняться дольше, а ротация бэкапов для каждой группы будет настроена индивидуально.
КСТАТИ! Про избирательный бэкап с дополнительным резервированием только измененных и удаленных от предыдущей версии бэкапа, см. отдельную заметку: Бэкап с сохранением старых версий файлов и папок
Скрипты ротации — bat и vbs
Скрипты ротации здесь приведены для примера, их можно доработать под себя в соответствии со своими задачами.
В примере второго скрипта (на vbs) есть одна папка которая может быть исключена из ротации. При желании можно доработать скрипт так чтобы таких исключенных из ротации папок было несколько.
Так же приведен пример скрипта ротации логов, который анализирует файлы по именам.
Скрипт bat, удаляющий все старые архивы по времени их изменения
Скрипт ротации анализирует время файлов архивов, оставляя только 10 самых «свежих» (независимо от имени файла):
rotation_all_files_date.bat
@echo off setlocal enableextensions enabledelayedexpansion set bPath=C:\Backup_rar_filesset /a iCount = 10 for /f «skip=%iCount% usebackq delims=» %%i in ( `dir /b /a:-d /o:-d /t:w «%bPath%»`) do del /f /q «%bPath%\%%~i» endlocalexit /b 0
Скрипт vbs, удаляющий старые папки за исключением указанной
Скрипт ротации анализирует время папок, присутствующее в их именах, оставляя только последние 30, но игнорирует при этом всегда одну указанную папку.
Запускать так (в консоли):
cscript //NoLogo «C:\_ПУТЬ_\rotation_folders_name.vbs» /path:»D:\Backup» /exclude:»D:\BackupoDelFolder» /max:30 /testmode
ВАЖНО! Параметр /testmode для рабочего режима указывать не нужно. Он необходим только для тестирования — если он будет присутствовать, то ничего происходить не будет, хотя в консоли будет отображаться эмуляция реальных операций.
rotation_folders_name.vbs
Option ExplicitOn Error Resume Next Dim FSO, WshShellDim excldPath, bPath, maxFolders, testMode bPath = Wscript.Arguments.Named.Item(«path»)excldPath = Wscript.Arguments.Named.Item(«exclude»)maxFolders = Wscript.Arguments.Named.Item(«max»)If (Wscript.Arguments.Named.Exists(«testmode»)) Then testMode = TrueElse testMode = FalseEnd If Set WshShell = WScript.CreateObject(«WScript.Shell»)'WshShell.Exec «cmd /c chcp 866» Set FSO = CreateObject(«Scripting.FileSystemObject») If (testMode = True) Then Wscript.Echo vbCrLf & «Exclude — » & excldPath Wscript.Echo «Path folders — » & bPath Wscript.Echo «Max folders — » & maxFolders & vbCrLfEnd If If (FSO.FolderExists(excldPath) And FSO.FolderExists(bPath)) Then If (testMode = True) Then Wscript.Echo vbCrLf & «Deleted — [» & DeleteOldFolders(Array(bPath, maxFolders, excldPath)) & «] old folders» Else DeleteOldFolders(Array(bPath, maxFolders, excldPath)) End IfEnd If ' Out: testModeFunction DeleteOldFolders(pDirArr) Dim savP, maxF, excldP Dim FSO, FSOsf Dim savFolders, savFolder, delFolder, fldrsArr(), cF, dF savP = pDirArr(0) maxF = pDirArr(1) * 1 excldP = pDirArr(2) cF = 0 dF = 0 Set FSO = CreateObject(«Scripting.FileSystemObject») Set FSOsf = FSO.GetFolder(savP) Set savFolders = FSOsf.SubFolders For Each savFolder In savFolders If (StrComp(excldP, savFolder.Path, vbTextCompare) 0) Then If (testMode = True) Then Wscript.Echo «-> ADD — » & savFolder.Path End If ReDim Preserve fldrsArr(cF) fldrsArr(cF) = savFolder.Path cF = cF + 1 Else If (testMode = True) Then Wscript.Echo «-> SKIP — » & savFolder.Path End If End If Next If ((cF > 0) And (cF > maxF)) Then If (testMode = True) Then Wscript.Echo vbCrLf & «After Sort:» End If For Each delFolder In SortArray(fldrsArr) If (cF > maxF) Then If (testMode = True) Then Wscript.Echo «-> DEL — » & Right(» » & cF, 6) & » -> » & delFolder Else 'WshShell.Exec «cmd /c rmdir /S /Q » & Chr(34) & delFolder & Chr(34) FSO.DeleteFolder delFolder, True End If dF = dF +1 Else If (testMode = True) Then Wscript.Echo «-> SKIP — » & Right(» » & cF, 6) & » -> » & delFolder End If End If cF = cF — 1 Next End If DeleteOldFolders = dFEnd Function Function SortArray(arr) Dim m, n 'counters Dim b 'buffer Dim f 'flag If IsArray(arr) Then For m = 0 To UBound(arr)-1 f = True For n = 0 To UBound(arr)-1 If arr(n) > arr(n+1) Then b = arr(n) arr(n) = arr(n+1) arr(n+1) = b f = False End If Next If f Then Exit For Next End If SortArray = arrEnd Function
ВАЖНО! Сортировка папок происходит по их имени (а не временной метке), поэтому в имени папок должна присутствовать дата в формате подходящем для сортировки (всегда две цифры в дне и месяце — 0 вначале если число меньше 10, а так же подходящий для сортировки порядок в имени — сначала год, потом месяц, после чего день, например: «…/backup_2017-08-21»).
Скрипт vbs, удаляющий старые лог-файлы
Скрипт ротации логов, который ищет в указанной папке только файлы с расширением «.log», сортирует их по имени и оставляет только последние 30 (остальные удаляет).
Запускать так (в консоли):
cscript //NoLogo «C:\_ПУТЬ_\rotation_log_files.vbs» /path:»D:\Log_Folder» /max:30 /testmode
ВАЖНО! Параметр /testmode для рабочего режима указывать не нужно. Он необходим только для тестирования — если он будет присутствовать, то ничего происходить не будет, хотя в консоли будет отображаться эмуляция реальных операций.
rotation_log_files.vbs
ВАЖНО! Сортировка логов происходит по имени файлов, поэтому в имени логов должна присутствовать дата в формате подходящем для сортировки (всегда две цифры в дне и месяце — 0 вначале если число меньше 10, а так же подходящий для сортировки порядок в имени — сначала год, потом месяц, после чего день, например: «backup_2017-08-21.log»).
Источник: http://dummyluck.com/page/backup_rotation
Резервное копирование в Windows 7
После установки Windows 7, используя Центр поддержки, напоминает о необходимости настроить резервное копирование. Конечно, эти напоминания можно отключить. Я не стал отключать, а, наоборот, озаботился созданием резервной копии. Ни для кого не секрет, что данных на компьютере мы храним все больше, и совершенно не хотим их потерять.
Специально для резервного копирования был куплен внешний диск Seagate BlackArmor объемом 1 ГБ. (В 2009 г. такой объем не казался чем-то совсем маленьким.)
Давайте пройдемся по шагам настройки резервного копирования в Windows 7.
Настройка резервного копирования
Чтобы начать настройку, откройте приложение Архивация и восстановление файлов. Для этого щелкните значок Центра поддержки (в виде флажка) на Панели задач:
И щелкните ссылку Открыть центр поддержки.
Теперь щелкните ссылку Архивация и восстановление в левой части окна (первая ссылка внизу в секции См. также).
Откроется приложение Архивация и восстановление файлов:
Самый простой способ, чтобы открыть приложение Архивация и восстановление: нажать кнопку Пуск, набрать архива и щелкнуть Архивация и восстановление среди найденных элементов в группе Программы. Или откройте Панель управления, и в группе Система и безопасность щелкните Архивирование данных компьютера.
У меня уже настроена архивация, поэтому в этом окне показывается текущий размер архива и параметры архивации. Если у вас еще не настроена архивация, оно будет выглядеть примерно так:
Этот снимок экрана из Windows 8; в Windows 7 должно выглядеть почти так же.
Щелкните ссылку Настроить архивацию (или Изменить параметры, если архивация была настроена) и дождитесь запуска приложения Настройка архивации:
Выберите диск, на котором будут храниться архивы:
У меня это — внешний жесткий диск BlackArmor Drive, которому присвоена буква B:.
В моей системе много дисков, поэтому список достаточно большой, обычно вы увидите два–три диска в этом списке.
Выберите, что следует архивировать:
Система предлагает два варианта:
- Предоставить выбор Windows (рекомендуется)
- Предоставить мне выбор
В первом случае будут сохранены все файлы, сохраненные в библиотеках, на рабочем столе: будет сохранен (почти) полный профиль пользователя, включая все стандартные папки. Этот вариант подойдет только если все важные файлы вы храните в папках по умолчанию: Документы, Изображения, Музыка и др., которые доступны из меню Пуск.
Во втором случае можно выбрать, какие библиотеки и стандартные папки включать в архив, а также выбрать любые другие папки на жестком диске. Выбираем вариант Предоставить мне выбор и переходим к выбору папок:
По умолчанию Библиотеки каждого пользователя компьютера будут выбраны. Я отменил сохранение библиотеки .
В Дополнительные расположения входят следующие папки:
- Папка AppData
- Контакты
- Рабочий стол
- Загрузки
- Избранное
- Ссылки
- Сохраненные игры
- Поиски
Все эти папки расположены в профиле пользователя. Щелкните по имени пользователя в меню Пуск и вы их увидите. По умолчанию папка AppData скрыта; в этой папке приложения сохраняют свои настройки и данные. Я рекомендую включать папку AppData в архив.
Можно включить в архив другие папки, хранящиеся на жестких дисках компьютера. Например, я храню фотографии на отдельном разделе жесткого диска — диск Photo (P:) — и хочу добавить в архив папку Фото, хранящуюся на этом диске.
Отметьте или снимите флажок Включить образ системы. Я рекомендую сохранять образ системы, если на диске, где будут храниться архивы, достаточно места. В случае неполадок можно быстро восстановить работоспособность системы из сохраненного образа. Образ системы — это точная копия системного диска, обычно C:, включая все пользовательские данные, настройки программ и операционной системы, все установленные приложения.
Далее система предложит еще раз проверить выбранные параметры:
Щелкните ссылку Изменить расписание, чтобы изменить время и день, когда будет производиться резервное копирование. Я выбрал: Пятница, 22:00.
Нажмите кнопку Сохранить параметры и начать архивацию или Сохранить параметры и выйти.
Если вы впервые настроили архивацию, то система выполнит первое резервное копирование. В первый раз на это может потребоваться несколько часов, в зависимости от объема сохраняемых данных и скорости используемых жестких дисков. В следующий раз система сохранит только измененные файлы, поэтому архивация займет меньше времени.
Что получится в результате архивации?
На жестком диске будет создана папка WindowsImageBackup, если вы выбрали создание образа системы, и папка с именем компьютера, внутри нее будут папки резервных копий, внутри которых хранятся инкрементальные архивы:
- COMPUTER
- Backup Set 2012-12-29 115646
- Backup Files 2012-12-29 115646
- Backup files 1.zip
- Backup files 2.zip
- Backup files 1254.zip
- Backup Files 2013-01-03 173608
- Backup Files 2012-12-29 115646
- Backup Set 2013-10-19 105815
- Backup Files 2013-10-19 105815
- Backup Files 2013-12-06 220007
- Backup Set 2012-12-29 115646
- WindowsImageBackup
- COMPUTER
Папки с резервными копиями и образом системы защищены, туда не так просто попасть. Чтобы удалить ненужные архивы, используйте интерфейс программы Архивация и восстановление данных, об этом я уже рассказывал одноименном обзоре: Архивация и восстановление файлов.
Файлы в резервной копии хранятся в виде Zip-архивов. Извлекать их вручную неудобно, используйте кнопку Восстановить мои файлы или ссылку Восстановить файлы других пользователей в интерфейсе программы Архивация и восстановление данных.
Предыдущие версии
В Windows 7 в свойствах папки или файла есть вкладка Предыдущие версии. Это — часть Защиты системы.
На вкладке Предыдущие версии вы увидите список доступных версий файла/папки, включая точки восстановления системы и резервные копии. Таким образом можно быстро и легко восстановить случайно измененный или удаленный файл или папку.
Если версия файла или папки относится к точке восстановления, то ее можно просто открыть и посмотреть содержимое; если версия файла хранится в резервной копии, то будет доступно только восстановление.
Источник: https://alexyv.livejournal.com/316701.html