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

14

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

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

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

umläute
источник

Ответы:

12

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
Али Чехаб
источник
9

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

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

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

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

PQD
источник
5

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

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

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

Кайл Брандт
источник
1
+1 за различие между инкрементными резервными копиями и зеркалированием (что по умолчанию делает rsync).
слеське
О да! Зеркалирование было тем словом, за которое я ухватился, хороший звонок :-)
Кайл Брандт
0

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

http://www.dirvish.org/

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

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

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

Alphax
источник