Я ежедневно делаю резервную копию своего ноутбука на рабочий стол Fedora, используя rsync с жесткими ссылками. Это отлично работает почти год.
Я недавно купил новый компьютер, передал свои данные и хотел бы продолжать выполнять ежедневное резервное копирование этого компьютера.
Однако из-за передачи данных со старого ноутбука на новый, временные метки, очевидно, изменились, и, таким образом, моя ежедневная резервная копия rsync будет повторно передавать все данные.
Я думал, что, добавив переключатель -c (контрольная сумма) к моей резервной копии rsync, он будет сопоставлять файлы на основе контрольной суммы, а не метки времени и размера, и передавать только те файлы, которые отличаются или отсутствуют. Это сработало, но при изучении новой резервной копии жесткие ссылки не создаются, и похоже, что файлы, которые должны быть жестко связаны, просто копируются в новый каталог резервных копий из предыдущего каталога резервных копий на сервере резервного копирования. Для меня это очень своеобразное поведение, и я не могу понять, почему это происходит. Контрольные суммы совпадают для файлов, которые, по моему мнению, должны быть жестко связаны.
Я просмотрел справочную страницу rsync и немного поработал в Google и не смог найти ничего, что помогло бы мне лучше понять это поведение.
Я думаю, вы неправильно понимаете как контрольную сумму, так и параметры жесткой ссылки.
В --checksum
Опция описана на странице руководства как «пропускать на основе контрольной суммы, а не времени модификации и размера». Это означает, что время и размер мода в основном игнорируются, но это делает означают, что все файлы читаются с обеих сторон (потому что он должен прочитать файл для вычисления контрольных сумм.
Важно понимать, что rsync все равно делает это, если время и размер другие. Так --checksum
вызывает гораздо больше работы (чтение каждого файла), чем без него. Без него контрольные суммы производятся только в том случае, если время или размер модификации отличаются. Как сказано выше, это влияет только на то, какие файлы пропускать.
--checksum
обычно используется в сценариях резервного копирования для эквивалента «полного резервного копирования», например, один раз в месяц. Это гарантирует, что любой файл, который мог быть изменен, но таким образом, чтобы время модификации и размер остались прежними, были правильно скопированы.
В --hard-links
option (со страницы руководства): «Это говорит rsync искать жестко связанные файлы при передаче». Обратите внимание, что это только при передаче, поэтому он не обнаружит, что у вас есть существующая копия данных на сервере rsync в другом месте, и жестко свяжет ее. Он только связывает файлы, которые передаются, с другими файлами, которые были переданы ранее.
Итак, если вы хотите, чтобы каталог резервных копий нового ноутбука был жестко связан с каталогом резервных копий старого ноутбука, вам нужно будет удалить каталог резервных копий нового ноутбука и воссоздать его с помощью жестких ссылок (например, через cp -al
). Однако, если все даты ваших файлов изменились, вы, вероятно, столкнетесь с проблемами, когда rsync повторно перенесет эти файлы и разорвет эти жесткие ссылки. Сначала вам, вероятно, потребуется выполнить синхронизацию одного ноутбука с другим, стараясь не выполнять синхронизацию данных, которые действительно должны различаться между ними. Таким образом, файлы должны иметь одинаковые даты, и это сделает ваши резервные копии rsync более приятными.
Я знаю, что вы сказали, что читали справочную страницу, но я рекомендую вам взглянуть на нее еще раз, особенно на подробные описания --checksum
и --hard-links
параметры. Вам, вероятно, также следует прочитать о --in-place
вариант, так как он может плохо взаимодействовать, если вы пытаетесь сохранить жесткие ссылки.
--checksum, как вы и ожидали, не будет передавать файлы и использовать существующую резервную копию в качестве ссылки
--link-dest жестко свяжет вашу новую резервную копию со старой, что снизит использование диска.
Но ... но если временные метки исходных файлов отличаются от более старых резервных копий, жесткие ссылки будут невозможны (две жесткие ссылки не могут иметь разные временные метки, права собственности или разрешения. Таким образом, у вас не будет жестких ссылок ...
обходной путь - использовать fdupes -r1L / folder1 / folder2, он заменит файлы folder2 жесткими ссылками с единственным условием, что содержимое идентично.
Кстати, см. Также мой сценарий оболочки для создания резервных копий моментальных снимков вашей полной файловой системы с использованием rsync с жесткими связями между резервными копиями (дедупликация), чтобы полная резервная копия занимала как можно меньше дискового пространства, как если бы она была инкрементной. Он поставляется с настройками настройки, такими как подпись целостности MD5, защита chattr, правила фильтрации, дисковая квота, политика хранения с экспоненциальным распределением (ротация резервных копий при сохранении более свежих резервных копий, чем старые). в свободном доступе: http://blog.pointsoftware.ch/index.php/howto-local-and-remote-snapshot-backup-using-rsync-with-hard-links/
приветствует Франсуа Шерер