Я использую rsnapshot для создания ежечасных / ежедневных / еженедельных / ежемесячных резервных копий моего "рабочего" ресурса. Сейчас я пытаюсь скопировать весь каталог резервного копирования на внешний диск с помощью rsync.
Я использовал эту команду / параметры в сеансе экрана (да, rsync-exclude.txt находится в папке, из которой я запускаю команду)
rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;
Все это работает на QNAP TS-439, внутренний диск представляет собой EXT4 с одним диском (без RAID), внешний диск - EXT3.
Происходит следующее: Rsync следует за каждой жесткой ссылкой и копирует реальный файл вместо воссоздания обновленной жесткой ссылки на внешнем диске. Я не сразу узнал об этом, поэтому внешний диск оказался разорван с копиями ххх тех же файлов.
Чего я хочу добиться: скопировать всю файловую структуру, сгенерированную rsnapshot, на внешний диск, сохранив жесткие ссылки для экономии места. Примечание: это не обязательно должно быть сделано с помощью rsync.
Спасибо за ваши идеи и время. Я буду признателен за вашу помощь, большое время.
Обновление: я узнал, что rsnapshot не использует символические ссылки, он использует жесткие ссылки, поэтому теперь я использую опцию -H, которая должна сохранять структуру жестких ссылок в соответствии с Rsnapshot для нескольких назначений (или поддерживать структуру жестких ссылок), но все равно не будет работать ... что мне здесь не хватает?
Обновление 2: я нашел другое мнение / утверждение по этой теме здесь: rsync с --hard-links замораживает Стивен Понедельник предлагает не пытаться rsync больших файловых структур, содержащих жесткие ссылки, так как он поглощает много памяти и является сложной задачей для rsync. Поэтому, вероятно, лучшим решением было бы создание .img структуры данных, которую я пытаюсь сделать резервной копией. Что вы думаете?
Ответы:
Опция
rsync
команды-H
(или--hard-links
) теоретически сделает то, что вы пытаетесь выполнить, а именно, вкратце: создать копию вашей файловой системы, которая сохраняет жестко связанную структуру оригинала. Как я уже упоминал в своем ответе на другой подобный вопрос , эта опция обречена на провал, когда ваша исходная файловая система выходит за пределы определенного порога сложности жестких ссылок.Точное расположение этого порога может зависеть от вашей оперативной памяти и общего количества жестких ссылок (и, возможно, ряда других вещей), но я обнаружил, что нет смысла пытаться определить его точно. Что действительно важно, так это то, что этот порог слишком легко преодолеть в реальных ситуациях, и вы не будете знать, что вы его переступили, пока не настанет день, когда вы попытаетесь запустить
rsync -aH
или забастовку,cp -a
которая в конечном итоге терпит неудачу ,Я рекомендую следующее: скопируйте жестко связанную файловую систему как единое целое, а не как файлы. То есть скопируйте весь раздел файловой системы как один большой двоичный объект. Для этого есть ряд инструментов, но наиболее распространенным является
dd
.При наличии стоковой прошивки ваш QNAP NAS также должен быть
dd
встроеннымfdisk
. С помощьюfdisk
, создайте раздел на целевом диске, по крайней мере, такой же, как исходный раздел. Затем используйтеdd
для создания точной копии исходного раздела во вновь созданном целевом разделе.Во время выполнения
dd
копии вы должны убедиться, что в исходной файловой системе ничего не изменится, чтобы в конечном итоге вы не получили поврежденную копию в месте назначения. Один из способов сделать это - обратитьсяumount
к источнику перед началом процесса копирования; Другой способ - подключить источник в режиме только для чтения.источник
--hard-links
(с 's').-l
для символических ссылок, зачем делать что-то для жестких ссылок?(Извините, это ответ, а не комментарий, у меня еще нет прав на комментарии, и на этот ответ нужен ответ)
Еще одно замечание, которое должно быть комментарием: это все аппаратное обеспечение или вы на виртуальной машине, монтируете сеть?
редактировать
игнорировать мой предыдущий комментарий о том, почему вы используете жесткие ссылки, я пропустил
rsnapshot
комментарий.Было бы полезно иметь тест, который сначала проверяет rsync между двумя локальными каталогами на локальном диске, а затем на вашем удаленном диске. Этот небольшой тест показывает
-H
вариант работы, как и ожидалось.-i
Вариант дляls
шоу инодов, тем самым показывая , что ссылки были сохранены без каких - либо дополнительных копий.Последующий тест
rsync -avzHP src/ host:/tmp
на удаленном хосте все еще поддерживал жесткие ссылкиисточник
-H
на странице руководства, вы можете увидеть, что есть несколько предостережений, которые я бы сказал, попробуйте держаться подальше отЭто длинный путь, но если вы не можете найти другое решение, я бы посоветовал попытаться отформатировать USB-накопитель как EXT4. Может быть, это может быть проблема: https://bugzilla.samba.org/show_bug.cgi?id=7670
источник
Вы пытались добавить
-l
опцию?Я знаю, что страница руководства говорит, что она включена,
-a
но страницы руководства не всегда на 100% точны.источник