Назад | Перейти на главную страницу

Как RSYNC выполняет инкрементное резервное копирование

Как rsync знать, какие файлы изменены, а какие нет? Регистрирует ли он свои данные где-нибудь в файле?

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

Итак, мой главный вопрос: если я загружаю исходные файлы через FTP, а не через rsync. Будет rsync по-прежнему пропускает эти существующие файлы или загрузит все при первом запуске.

У Rsync есть несколько флагов, которые контролируют, на что он будет смотреть и что копировать в место назначения. Чаще всего используется флаг «-a», который является флагом «Архив», вероятно, это то, что вам нужно. запустите rsync с флагами «-av» и сделайте первый запуск с данными, для которых вы хотите создать резервную копию. В следующий раз, когда он запустится, он выполнит контрольную сумму блока для файла и скопирует только те части, которые были изменены в существующих файлах, скопирует новые файлы и удалит файлы, которых больше нет. Проверьте раздел параметров "-a" на:

http://linux.die.net/man/1/rsync

Первый запуск будет интенсивным для BandWidth, следующие запуски, скорее всего, будут интенсивно использовать процессор, но потребуют небольшой пропускной способности по сравнению с первоначальным запуском. Если только у вас не будет большой оттока вашего набора данных.

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

Если вы хотите регистрировать то, что было изменено, вы можете использовать опцию «--log-file». В общем, примерно так звучит то, что вы хотите:

rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups

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

упрощение процесса:

  • сначала проверяет размер файла, даты создания / изменения, флаги ... если все они идентичны, пропускайте файл.
  • если в целевой папке нет файла с таким именем, просто копирует весь файл.
  • если в адресате есть файл, он вычисляет контрольные суммы для каждых 2 КБ файла и передает отправителю.
  • отправитель сравнивает содержимое исходного файла и сравнивает его с целевым, и передает любые данные, которых еще нет, вместе со ссылками на любые совпадающие данные. с этим цель может восстановить весь файл, используя части старой цели и новых блоков.

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

Так, просто использование режима архива не является инкрементным резервным копированием. Я думаю, что разница важна, потому что это означает, что вы не можете вернуться во времени, чтобы получить файлы до того, как они изменились..

Если вы хотите сделать действительно инкрементное резервное копирование, вы можете использовать такие параметры, как --backup-dir. Есть пример Вот.

rsync не регистрирует никаких данных, он проверяет временные метки изменения файла, а затем содержимое. Если вы сначала загрузите по ftp, все будет в порядке - rsync не будет повторно передавать все данные, но, вероятно, будет просматривать все содержимое и исправлять временные метки. но большого трансфера снова не будет.

Если на самом деле вопрос: «Я хочу делать инкрементные резервные копии через rsync», есть несколько доступных вариантов. Использую Дирвиш:

http://www.dirvish.org/

Восстановление легко, потому что оно дает вам снимки: он использует жесткие ссылки, чтобы предоставить вам полные снимки, при этом экономя место там, где файл идентичен. Внутри он использует параметр rsync --link-dest:

--link-dest=DIR         hardlink to files in DIR when unchanged

Поскольку он использует rsync, он также экономит пропускную способность сети (и, следовательно, время), где изменения очень небольшие. Это также работает, если вы деготь и сначала сникернет локально созданный образ dirvish, если у вас много файлов и медленная ссылка.