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

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

Месье знает толк!
Работа с объемными файлами на PHP? Годно.
А почему бы просто не купить Acronis True Image? Я понимаю, что это платное ПО, но домашняя версия, к примеру, стоит всего 1000 руб. Совсем не большие деньги за сохранность «нажитого непосильным трудом»
Спасибо за минус. Комментарии, чем мой совет настолько плохой будут? :-)
Вы заговорили о платном софте, а за это здесь карму рвут в клочья.
Да нет, не рвут :-)
В клочья здесь рвут в основном за велосипеды. А когда для специфической задачи есть софт (хоть и платный), который эту задачу выполняет хорошо — то никто никого не рвёт :-)
Рвут за упоминание «неправославного» платного софта :) Особенно в блогах конкурентов
Скорее всего по этой причине
А во-вторых, я очень часто переименовываю свои файлы и время от времени перекладываю из директорию в директорию. А это, в свою очередь, к моему удивлению, срезало почти всех кандидатов в «бекаперы». То есть, софт тупо смотрел на имя файла, дату его изменения и… и все. В итоге бекап разбухал.

Акронис при всех его достоинствах — дубли файлов по хэшам не определяет, по крайней мере нам не удалось найти такую настройку.
Ок, согласен.

Но лично я как обычный пользователь и программист не могу представить ситуацию, когда в моих бэкапах лежат ОГРОМНЫЕ файлы и я их постоянно переименовываю :-)

ps: для себя избрал схему с инкрементными бэкапами дважды в неделю и полными раз в 2 месяца
Но лично я как обычный пользователь и программист не могу представить ситуацию, когда в моих бэкапах лежат ОГРОМНЫЕ файлы и я их постоянно переименовываю :-)
Не обязательно один огромный, достаточно кучи мелких. Плюс достаточно перемещения, переименование не обязательно.
У нас лично отсортированные/отредактированные видео/фото по мере сортировки перемещаются в другие папки, вот Вам и бытовая рядовая ситуация.
Не скажу точно на счет домашней версии. Но у тех версий акрониса которые используем мы, есть великолепный механизм дедупликации данных. По помоему это как раз и есть решение вашей проблемы.
НЛО прилетело и опубликовало эту надпись здесь
Мне казалось, что блочно-инкрементный бэкап это уже «общее место» для систем резервного копирования сегодня. По крайней мере в последней на сегодня версии TI был замечен режим «непрерывной защиты», и мне показалось, что это именно оно (сохраняются в резервную копию измененные блоки, вне завиимости от названия самого файла)
Тем более :-)
НЛО прилетело и опубликовало эту надпись здесь
я конечно сам php'шник, но для таких целей помоему лучше юзать на линухе баш скрипты, а на винде какой либо софт.
НЛО прилетело и опубликовало эту надпись здесь
Плохой заголовок, ждите толпу злых маководов из поисковиков
Ничего, вот соберусь писать web-интерфейс к «бекаперу», я у них и интерфейс экспроприирую.
ПХПники… такие велосипедисты…

В Windows есть Volume Shadow Copy служба, которая позволяет это делать удобнее и лучше встроенными средствами windows с графическим интерфейсом и версиями файлов.

Для того чтобы что-то выкладывать общественности, надо сначала узнать нужно ли это творение.
На службу теневого копирования Windows надежд мало. Подводила и на server 2003 и на 2008 (на XP,Vista,Seven не пользовался). Если вдруг по какой то причине служба решит, что теневое копирование для тома не включено, все бэкапы тома будут удалены. После исправления ошибки и включения теневого копирования, весь процесс накопления бэкапов начинается заново.
НЛО прилетело и опубликовало эту надпись здесь
Много лет ей пользуюсь сам, проблем не видел (правда службы у меня сами по себе не отключаются).
Прошу прощения, не точно выразился. Данная проблема возникла из за того, что сервер на котором работала служба, был контроллером домена, а после понижения возникла проблема с теневым копированием тома. Задачи по теневому копированию тома не запускались. К сожалению, сейчас не смогу найти ссылку на описание проблемы, остался лишь текст решения:
«Заходим: c:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\S-1-5-18\
Удаляем.
Все задания в планировщике придется внести заново.
Включаем расписание теневого копирования.»
Тем не менее, после включения расписания теневого копирования, все накопленные бэкапы были потеряны.
В настоящее время продолжаю пользоваться теневым копированием, правда уже на Windows Server 2008, проблем не обнаружил. Но неприятный осадок остался. Хотя, конечно, сам виноват — после понижения следовало проверить работоспособность такой важной вещи, как теневое копирование.
Помнится, у NetApp файловая система заточена под такое дело. Читал их занимательные посты примерно год назад. У них и дубликаты и инкрементальные бекапы есть. ИМХО, лучше юзать что-то заточенное профессионалами :)
НЛО прилетело и опубликовало эту надпись здесь
Бэкап файлов под виндой при помощи PHP в стиле MacOS?! Ну нельзя нашим людям давать 10 дней выходных, ну нельзя!
Да уж… Товарисч используй хотя бы Python… Что ле…
Why not?

— Винда — основная система

— Пых — основной (и единственный кроме JS) хорошо знакомый ЯП. Плюс который установлен «по дефолту» у пользователей Denwer и т. п. (ну, не считая язык «command.com», который по дефолту без кавычек, хотя, вроде VBScript тоже в винде есть по дефолту, а ещё какой-то PowerShell в новых версиях).

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

Можно, конечно, всё бросить и начать изучать, например, C или Python, его среды трансляции и выполнения (которые во втором случае не совсем «родные» под виндой), библиотеки и т. п. Но зачем это для разовой и не сильно объёмной задачи? Главное, имхо, применяемые алгоритмы, а не язык, если особых требований к скрипту (а это именно скрипт, автоматизирующий рутинную работу) по производительности, поддерживаемости, кроссплатформенности и т. п. нет.

Не, я сам использую иногда Python или Ruby для подобных скриптов и PoC (Django и RoR), но лишь в силу любознательности и наличия большого количества свободного времени (сейчас вот Scala и Lift изучаю для этого, просто интересно, правда время запуска даже «hello world» удручает). Когда нужно что-то срочно заскриптовать, то использую PHP (включая биндинги к GTK+), чтобы не разбираться с незнакомыми глюками нюансами малознакомого ЯП или, тем более, поисками «чёрной кошки в темной комнате» (существующего решения без гарантии, что оно существует), вполне понимая, что PHP менее подходит для этих задач (да и для решаемых ради денег, если честно — не очень, но рынок «визиток» и «бложиков» консервативен, а спрос на пхп-«быдлокодеров» много выше, имхо, всех остальных ЯП вместе взятых на позиции джуниоров), но изучать язык встроенных команд bash, содержание /usr/bin или нестандартные библиотеки C ради конкретной и, как правило, неожиданно возникшей задачи, которую могу решить на PHP, нахожу оверхидом, если подобное решение не попадалось на глаза (и запомнилось) на хабре, стэковерфлоу и т.п.

Просто вчера, увидев заголовок статьи в RSS и начав её читать, я подумал что мне самому уже пора лечиться :)
Да нет, я ни сколь не против PHP, благо сам решаю в общем то десктопную задачу при помощи php, но живу с мыслью что это не правильно, хотя да — всё в общем то работает так как надо. Но соглашусь с последними вашими строками — прочитать про нестандартное решение/использование языка тоже в общем то интересно.
не сочтите за пиар, я года 2 назад засматривался на аналог вот такого девайся WD My Book Studio Edition II 2TB (WDH2Q20000E). 2 диска в коробке, можно юзать как рэид массив.
<шутка про две категории людей>
На самом деле есть три категории.
Из второй понемногу выделяется третья, те, кто после бэкапа проверяют резервную копию на возможность из нее восстановиться (а не просто на читаемость).
Я давно последний раз на PHP что-то делал, поэтому хочу задать вопрос по коду. Вы вроде md5 для всех файлов всегда заново считаете? Не было бы экономнее сначала сравнивать размер, а потом, если он совпал хотя бы с одним файлом из базы, и md5 пересчитывать.
Согласен, но от этой практики пришлось отказаться. Очень часто, из-за этого, проскакивали файлы с одинаковыми размерами, но разным содержимым. html-странички в основном. Исправишь что-нибудь, смотришь, а размер тот же получился.
Упс… Да вы правы, это я ваш комментарий не правильно понял. :-(
Но в итоге, все-равно придется считать хеш для всех файлов. Если совпадают размеры, надо удостоверится и снять хеш, а если размеры не совпадают со списком… тоже надо сделать хеш, чтобы внести его в список. В итоге, те же яйца, только в профиль.
Имхо хеши надо считать только для файлов у которых одинаковый размер. Иначе они все-равно разные. Если в бэкапе нет ни одного с таким же размером, то наш — однозначно надо бэкапить.
«Во-первых, не важно как называется файл, важно содержание» было бы еще здорово какой-нибудь музыкальный или видео хэш использовать типа musicbrainz.org/doc/MusicBrainz_Identifier, чтобы mp3 с поправленными тегами не копировались заново. Это особенно важно, так как сортировка новых и старых файлов восстановленных из бэкапа сравнима по трудозатратам с самим редактированием.
Для упрощения задачи (только mp3) можно считать хеш не от всего mp3 файла, а только от тела, исключая ID3 теги. Но это на две строчки сложнее. :-) А программист существо ленивое экономное.
почему-то не увидел в статье скрипта для восстановления из такого бэкапа
Обычным копированием из каталога с заданной датой.
а… хардлинки же, ну да.
Я примерно для этого же использовал git, довольно компактно и легко зеркалировать.
Так как однажды установил rsync (мануал: Приручаем rsync в Mac OS X ) то и решил его заюзать для бекапа своих документов да бы не лежать ему без дела.

Создал не большой скрипт, положил в ~/userName/bin/backup

содержимое:

#!/bin/bash

# Backup script
OPT='--progress --stats -lzuogthvr --delete --compress-level=9 --exclude ".D*"'

# Source directory`s
SRC_DIR=/Volumes/Data/path-to-dir-1

SRC_DIR_2=/Volumes/Data/path-to-dir-2
SRC_DIR_3=/Volumes/Data/path-to-dir-3

# Destination directory`s
DES_DIR=/Volumes/Infinite/backup/

/usr/local/bin/rsync --rsync-path="/usr/local/bin/rsync" $OPT $SRC_DIR $DES_DIR
/usr/local/bin/rsync --rsync-path="/usr/local/bin/rsync" $OPT $SRC_DIR_2 $DES_DIR
/usr/local/bin/rsync --rsync-path="/usr/local/bin/rsync" $OPT $SRC_DIR_3 $DES_DIR


Работает, правда, в ручном режиме, но мне большего и не требуется на данный момент.
Пару раз в месяц запустить с терминала скрипт не составляет труда.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории