Как стать автором
Обновить

Комментарии 81

Бегло просмотрел статью — интересно. Но закралось подозрение, что вы сделали велосипед. Для ваших целей не подошел бы гитовый репозиторий на съемном диске?
Недавно так же задался вопросами бекапа. Посмотрел несколько утилит… Видимо не то смотрел… Основной проблемой было, то что программы не обрабатывали удаленные файлы…
Идея с хардлинками самое то! Спасибо, то что нужно!
Потратил довольно много времени на упрощение приведенных в статье скриптов: share.cx.com/82tkG2
Автору большое спасибо за освещение интересной идеи.
А вот знаете что, попробуйте obnam запустить на Windows. Это замечательная программа, серьёзно.
Спасибо за наводку! Почитал про эту программу. Есть плюсы и минусы.
Плюсы:

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

— Может шифровать бэкапы.

Минусы:

— Для извлечения из бэкапа нужен специальный софт, нельзя извлечь средствами ОС.

Ну и, за 5 минут гугления не нашлось свидетельств, что кто-то запустил ее из-под винды.
Необходимость софта лично я минусом не считаю, честно говоря.
В Windows 8 есть прекрасная система бекапов, называется «история файлов», реализация на уровне TimeMachine из OS X (внутренний архив + раз в несколько часов или при подключении внешнего диска сбрасываются изменения на внешний диск), разве что интерфейс сделан по разному…
Разве туда можно произвольные папки подсунуть?
По дефолту бэкапятся все библиотеки. Можно создать свою и добавить в неё все нужные папки.
Как по мне не самое адекватное решение
Я понимаю, что нативное решение очень удобно.
А можно быстро достать из такого бэкапа нужный файл за нужное число в случае факапа?
Или подключив винт с «историями файлов» к чужому компу без Windows 8 мы увидим мешанину файлов и папок со странными именами?
На своём компьютере доступ к истории можно получить в два клика из explorer'а. Открыв папку с бэкапом на чужом компьютере, мы увидим всю иерархию забэкапленной части ФС с именами файлов вида Имя (дата время).расширение.
Я бы советовал всем проверять все в условиях «приближенных к бою». Я к своему удивлению не смог вытащить часть файлов с TimeMachine диска, когда мне припекло. Чем был несказанно удивлен. Слава богу у меня были бекапы рабочих файлов сделанные в ручную.
Интересно, по какой причине? Ведь в TM лежат ежечасные слепки системного диска (минус исключённые), неизменённые данные являются жёсткими ссылками. Каждая копия смотрит на предыдущую, и удалив случайную копию, наверняка можно сломать структуру до следующего копирования.
Восстановление из копии TimeMachine поддерживается как минимум тремя способами:
– загрузкой с раздела Recovery и выбор восстановления с TM;
– мастером миграции, который запускается при настройке чистой системы или запущенным в любой момент;
– вручную через интерфейс TM или просто копипастом файлов из копии.
Мне просто TM один раз спасла данные, когда полетел диск на ноуте, и мне очень интересно узнать с какими проблемами я могу столкнуться при восстановлении.
Детали не помню уже. Помню, что были проблемы неожиданные, когда думал что все в сохранности.
А жаль. Мне тоже интересно, что там может сломаться. А то пользуюсь и ничего другого не использую
С русскими именами файлов может. Я же написал — первым делом полез из TM вытаскивать, там фигня какая-то была. Плюнул, не стал разбираться — важное отдельно на другом диске лежит. Несколько лет прошло уже.
От этой напасти помогает RAID-массив. Мой текущий компьютер имеет RAID-0

Не хочу вас расстраивать, но из всех типов raid-массивов вы выбрали именно тот, вероятность отказа которого БОЛЬШЕ вероятности отказа одного диска.
наверное автор имел ввиду raid-1 (зеркало)
Да, конечно RAID-1. Исправил.
Есть маленькая проблемка, данный способ бекапа не учитывает историю изменений в самих файлах. Соответственно надо добавить проверку на дату файла и размер, при несовпадении не ограничиваться хардлинком, а копировать файл.
Как вариант можно считать хэш и хранить его в потоках. Не знаю разные ли потоки у хардлинков на один файл.
Не понял. Ясно же сказано, что копирование производится «если файл новый или поменялся». Как определяется «поменялся» надо смотреть в документацию rsync: насколько я знаю, он по‐умолчанию проверяет только дату и размер (и считает хэш только при несовпадении даты), но может быть настроен всегда сверять хэши при совпадении размера (при несовпадении считать хэш смысла не имеет: и так понятно, что файл изменился).
Спасибо за статью, было интересно почитать о Вашем опыте. Сколько работаю в сфере IT — столько задумываюсь о том, что свое собственное решение всегда лучше (проще, направлено на конкретную задачу) — до того момента, пока оно работает. Как только что-то меняется в системе на которую направлено решение, либо необходимо добавить новый функционал — возникают сложности, потому что к тому моменту обычно забываешь о скрипте/программе/решении и деталях как оно все работает. И вот тут я обычно задумываюсь — все-таки нужно использовать сторонний софт, с очевидными преимуществами подхода: поддержкой занимается команда разработчиков, чья работа поддерживать этот софт. Они придерживаются плана релизов, и добавляют новые фичи относительно регулярно, т.к. это тоже их работа. Плюс качество продукта, обычно, заметно выше чем скрипт (пускай даже продвинутый, с множеством параметров и вариантов логики.

Обычно такие рассуждения меня приводят к мыслям, что миру нужна система, которая была бы модульная, где модуль я могу написать сам, а другие придут из коммьюнити. Но ключевым должно быть то, что продукт должен быть достаточно user-friendly, чтобы его смогли использовать простые эникейщики. Поставил ядро, загрузил модули, указал пути (причем в GUI) — пользуйся. Я сравниваю с системой управления конфигурациями puppet, где такая же схема ядро/модули.

Сейчас для бекапа системы я использую софт из семейства Акронис.
Акронис не менее удобен для бекапов самих файлов — инкрементные бекапы (история файлов, соответственно), возможность подключить образ как диск, а также возможность хранить данные в облаке (FTP, S3, Acronis Cloud).

Также для Windows есть прекрасная программа goodsync, для Ваших нужд ее должно вполне хватить, на уровне файлов она работает точно так же как RSYNC, но имеет возможность также делать синхронизацию/бекап в облако. Программа хорошо поддерживается и постоянно развивается.

К сожалению никак не доходят руки до opensource проекта amanda backup, может кто пользовался? amanda.zmanda.com — система позволяет упорядочить все бекапы внутри инфрастрктуры (как заявляет сайт — аналог bacula с поддержкой более высокого уровня)
Буквально вчера пришел к Acronis True Image.

Win 7 забекапила раздел с установленной самой собой на другой диск. Создала загружаемый CD и тут-же не смогла восстановить себя на тот-же самый хардиск в том-же самом компьютере. Потому что был отключен другой диск! Шикарно. В итоге промучившись с этим бекапом пару вечеров понял, что штатными средствами вопрос не решить. И тут выяснилось, что Acronis True Image умеет открывать этот формат бекапа и он легко вытянул образ и записал все на свои места. После чего я внимательно присмотрелся к тому, что он еще умеет.

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

А вот это ошибка.
У меня однажды маленькая дочка смахнула внешний диск со стола. Он в это время работал, теперь ему кирдык.
Я, например, бэкапы храню в облаке (Dropbox, например), предварительно пропустив его через BoxCryptor. Так стало намного удобнее.
Хранить бэкап в одном месте — вообще плохая идея.
Я лично делаю так — 0. шифруем бэкап, 1. пишем на USB-диск, 2. пишем на dropbox, 3. пишем на gdrive.
Подумываю прикупить S3 и настроить его на сбрасывание в glacier, заменив таким образом последние 2 пункта.
А где я сказал, что в одном месте?
Кстати, как быть с синхронизацией версий на usb-drive/dropbox/gdrive?
Извиняюсь, подумал из вашего коммента так.
Синхронизация — подготовленный зашифрованный бэкап лежит во временном каталоге и пишется по очереди. Пока вручную, все лень автоматизировать. Хотя, на том же dropbox есть и версионирование, и вполне можно откатить на пару версий назад если нужно будет.
На мой взгляд, делать бэкап в пяти разных местах, предварительно все шифруя, (причем речь не о корпоративных, а о личных данных) — это паранойя.
В пяти — возможно.
В 2-3 — в самый раз. Здоровая паранойя еще никому не вредила, а наоборот спасала в некоторых ситуациях.
Это обманчивое впечатление проходит, как только происходит какое-нибудь ЧП и все наработки становятся действительно нужны и действительно срочно, и тут выясняется…
иногда случается то, что происходит то, что не должно было случиться никогда
У меня однажды маленькая дочка смахнула внешний диск со стола. Он в это время работал, теперь ему кирдык


На этот случай у меня следующий план: идем в магазин, покупаем другой диск, делаем бэкап на него.

Беда случится только если одновременно умрут и актуальные данные, и бэкап. Вероятность этого события кажется мне не очень большой (моя параноя на этот счет молчит).
Достаточно того самого скачка напряжения во время записи бэкапа. А если он объёмный, то занимать это может довольно много времени.
Хм, тогда можно купить 2 USB-диска, и делать бэкап то на один, то на другой. Вообще чем больше требуется надежность, тем больше мер для ее обеспечения. Каждый сам выбирает, где остановиться.
Про это еще Нортон в желтой книжке про жесткие диски писал, называя копии «сыном», «отцом» и «дедом».
Думаю, что когда дело касается важных данных не стоит класть всё в одну корзину. Мне видится идеальным сочетание clowd backup + внешний hdd. У обоих вариантов есть сильные и слабые стороны.
— clowd backup. Медленный «первичный» backup. У меня это заняло 3 недели.
— clowd backup. Цена, хотя и не так дорого как в статье. Я заплатил 190$ за 4 года. Сейчас объём данных на сервере ~255Gb. Вроде формальных ограничений на размер бекапа нет, но не думаю, что выйду за пределы 1Tb в течении ближайших 2-3 лет.
— hdd backup. Быстрый initial backup — меньше суток
— hdd backup. Цена сопоставима со стоимостью online backup. Я планирую обновить диск через 2-4 года. Стоимость от 2000р. и неограниченно :)

На рынке есть решения, которые позволяют настроить несколько destinations для backup:clowd / external hdd. То есть данные будут хранится и на сервере, и на своём внешнем hdd.
Я прошу прощения, но сейчас есть внешние жесткие диски с ПО для бэкапа данных. Мне девушка на день рождения подарила Seagate Backup Plus Drive на 1ТБ. У этого, по сути, жесткого диска есть ПО для бэкапов. Я не знаю, насколько хорошо оно работает в windows, конечно, но оно же есть. А это универсальный набор внешний винт + ПО. Зачем все усложнять?
Хорошо ли это ПО работает? Я запускал программу для бэкапа с диска WD Password. Деталей не помню, помню только, что сначала мне все очень не понравилось, а потом она намертво зависла.
К сожалению, проверить работу возможности не имел, т.к просто пустил этот диск в TimeMachine. Самому очень интересно, как оно работало бы под windows.
Как часто делать бэкапы — регулярно или перед аварией?
Когда-то меня спасли nncron и nnbackup. Программы для личного использования на территории СНГ бесплатные.
nncron — аналог линуксового крона под windows.
nnbackup — легкая утилитка бэкапов (с дампами и прочими наворотами).
В Windows есть встроенная утилита robocopy
Она вроде как не умеет в volume shadows copy
Предлагаю рассмотреть вариант Duplicati. Работает под виндой, имеет кучу настроек, делает интегральные бекапы, которые потом вручную можно восстановить без программы, шифрует бекап, может сливать его в облачное хранилище и еще много-много других полюсов.
По описанию очень похоже на упомянутый выше obnam, только рассчитано на бэкап в облачные хранилища.
Позволяет бэкапить в файлы, на сетевые шары и в облака. Отличная программа, сам ей пользуюсь. Вместе с jenkins получается идеальная система бэкапов (мне надо делать бэкапы в нескольких местах).
Объясните, кто «в теме»

Хранит ли rsync где-то посчитанные хэши? Или каждый раз будет считать их заново?
Тогда ведь при большом количестве файлов всё равно ведь будет очень медленно.
А если без хэшей, то зачем тут rsync и cygwin? Дату и размер файла можно сравнить да хоть прямо в том же батнике.
Насколько я знаю, хэши он не хранит. Но считать хэши он начинает только после того, как убедится, что дата отличается, а размер нет.
Спасибо за полный список! Жаль он мне не попался, когда я только прорабатывал варианты.
Возможно будет кому-то полезно. Поделюсь как устроено у меня.
Есть комп ПК1, который рабочий. На нем с помощью raid0 сделан диск для данных Disk1 (2Tb). ПК1 подключен к сети через ИБП типа on-line, т.е. с электросетью развязка полная т.к. до компа энергия добирается через преобразование розетка-выпрямитель-аккумуляторы-инвертор-розетка.
Я собрал дешевый комп ПК2. Засунул туда 2 дешевых винчестера Disk21 и Disk22 = объему Disk1. Из этих двух винчестеров организован пул Disk2 программой StableBit DrivePool (штука платная, кажется целых 20$ отдал). ПК2 подключен к сети через обычный бесперебойник.
На обоих компах установлен BitTorrent Sync. Трекер, DHT — отключены, прописаны IPшники компов и порты, по которым btc должны соединяться друг с другом (т.е. сделано все что бы они работали только в локальной сети). Таким образом, когда я работаю у меня всегда есть актуальная копия диска с данными и если что-то вдруг случится или я файлы удалю, то я могу их достать из «репозитория» (на ПК2 файлы при удалении btc не удаляет, а складывает в папку, которую можно потом почистить самостоятельно).
Ну и, разумеется, имеется обычный 3,5" Disk3 = объему Disk1, который покоится три месяца на полке в мягкой коробке, а раз в три месяца достается и на него сливается копия с Disk1. Все знают что этот диск брать имею право только я и под страхом грозной кары эту коробку даже передвигать нельзя (хотя она и так у задней стенки заныкана, что бы случайно не вытащили).
Т.О.:
— если сдохнет один жесткий диск на ПК1, то надо бежать за хардом такого же объема и восстанавливать рейд (процесс репликации долгий — несоклько часов);
— если сдохне контроллер raid на ПК1, то есть идентичный )));
— если сдохнет один жесткий диск ПК2, то надо бежать за хардом такого же объема и просто подключить его к пулу (15 минут и пул восстановлен);
— если сдохнет ПК1 полностью, то у меня будет иметься копия данных давностью 10-20 минут;
— если сдохнет ПК2 полностью, то у меня остаются все данные на основной компе;
— если сдохнут оба компа, то у меня остаются данные трехмесячной давности;
— если рядом взорвется ядерная бомба — черт с ними с данными, главное что бы была коробка консервов с тушенкой )))
У вас именно Raid0, не Raid1?
Да! Извиняюсь — перепутал(
У меня зеркалирование, т.е. RAID1.
не хочет копировать файлы с японскими иероглифами и прочими нестандартными символами в названиях

Вроде как эту проблему можно решить, заменив Cygwin на версию с поддержкой UTF-8 — www.oki-osk.jp/esc/utf8-cygwin/
Cygwin из сборки LightTPD под Windows вроде не испытывает проблем с иероглифами.
Скачал cygwin1.dll по той ссылке — не работает:(


Возьмите файлы из DeltaCopy
Взял отсюда: www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp

Пришлось скопировать и cygwin1.dll, и rsync.exe. В ДельтаКопи эти файлы меньше по размеру, чем у меня. Проблема не исчезла — самурайские файлы так и не копируются.
А если из LightTPD попробовать, как уже предлагал парой комментов выше?
Взял cygwin1.dll по вашей ссылке — все работает! Файлы с длинными именами копируются, самурайские файлы тоже. Спасибо большое! Через некоторое время обновлю пост, выложу туда дополнительную информацию из комментариев и обновленный архив со скриптом бэкапа.
Простите, забыл указать, что в cmd перед выполнением rsync нужно добавить:
set CYGWIN=codepage:utf8
set LC_CTYPE=C-UTF-8
Если все же захотите Linux, то мой Вам совет — OpenSuSE, так быстрее.
Советую присмотреться к MirrorFolder, несколько лет пользуюсь — без нареканий. Рез.копии создаются хоть куда, все настраивается под конкретную задачу. Есть возможность хранить удаленные, работать как софт-RAID и т.д.
Нет под Windows btrfs…
А зачем? Snapshot'ы можно и теневым копированием делать же.
Всё равно это не то. Когда оно работает на уровне драйвера файловой системы — вот это дело. Наконец btrfs после стольких лет стабильная.
Оно работает, емнип, на уровне блоков ФС, и, что самое интересное, понимает не только NTFS, а может, например, работать с виртмашинами.
Кстати, по поводу btrfs — grub таки научился нормально и без танцев с бубном с него грузиться?
И еще вопрос — оно на GPT с UEFI нормально живет?
(Я не просто так спрашиваю, подумываю вот, может попробовать на живой системе это дело).
Да, научился.
На счёт второго — нужно проверять, не в курсе.
Ясно. Спасибо за инфу. Если не прокатит со вторым пунктом — пусть будет хоть MBR.
У меня такая схема: на ПК Cobian Backup (может сжимать, может не сжимать, шифровать и т.д.), который сливает бэкапы на сетевую шара. Сетевая шара это какой-нибудь NAS типа WD My Book или rpi + usb-hard. На машинке с шарой крутиться btsync, который раздает в read-only на мой сервер далеко в ДЦ.

Если сервера нет, можно объединиться с друзьями, родственниками и т.д. Ставим btsync на их NAS или что у них там для бэкапа, а в замен даем место на своем. Или не даем, насколько у вас хорошо получается уговаривать людей.

Плюсы:
1) бэкап быстро сливается по локальной сети, а затем неспешно уходит куда надо через btsync.
2) на удаленных машинах btsync поддерживает версионость, так что даже если злые вирусы решат зашифровать или удалить ваши фоточки, то далеко в интернетах они останутся не тронутыми.

Минусы:
1) надо покупать NAS или что-то еще с большим диском
2) искать место куда все это будет дублироваться по btsync
несколько напомнило стрельбу из пушки по воробьям. Думаю в Вашем случае вполне хватило бы robocopy в сочетании с внешним диском желательно c NTFS и сжатием в папки резервной копии. Если условие копирования усложнять то можете воспользоваться этой утилиткой (мною писана, при желании функционал можно дальше расширять).
да, и в догонку рекомендую посмотреть пример 22. Там как раз про теневое копирование.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории