Можно попытаться использовать наследование вместо того, чтобы явно указать настройки безопасности для каждого файла.
Щелкните правой кнопкой по папке-> Свойства-> безопасность-> Усовершенствованный. Удостоверьтесь, что "Позволяют наследуемые полномочия....", проверяется. Добавьте Пользователя и укажите ее полномочия.
Другой путь состоит в том, чтобы установить полномочия программно. Вот пример кода в C#, который показывает, как установить ACL. Программный путь более гибок: можно ожидать периодически прежде, чем установить права доступа. Следовательно перфект сервера не пострадает.
Параметр -H
(или - жесткая ссылка
) команды rsync
теоретически будет делать то, что вы вкратце: создать копию вашей файловой системы, сохраняющую жестко связанную структуру оригинала. Как я упоминал в моем ответе на другой аналогичный вопрос , эта опция обречена на неудачу, когда ваша исходная файловая система вырастет за пределы определенного порога сложности жестких ссылок.
Точное расположение этого порога может зависеть от вашего RAM и общее количество жестких ссылок (и, вероятно, ряд других вещей), но я обнаружил, что нет смысла пытаться точно определить это. Что действительно имеет значение, так это то, что порог слишком легко переступить в реальных ситуациях, и вы выиграли » Я знаю, что вы пересекли его , пока не настанет день, когда вы попытаетесь запустить rsync -aH
или cp -a
, которые терпят неудачу и в конечном итоге терпят неудачу.
Я рекомендую следующее: копируйте файловую систему с жесткими связями как единое целое, а не как файлы. То есть скопируйте весь раздел файловой системы как один большой двоичный объект. Для этого доступен ряд инструментов, но наиболее распространенным из них является dd
.
Со стандартной прошивкой ваше NAS-устройство QNAP должно иметь встроенный dd
, а также fdisk
. С помощью fdisk
создайте раздел на целевом диске, размер которого не меньше размера исходного раздела. Затем используйте dd
, чтобы создать точную копию исходного раздела на вновь созданном целевом разделе.
Пока выполняется копия dd
, вы должны убедиться, что ничего не изменится в исходной файловой системе, чтобы не получить поврежденную копию в месте назначения. Один из способов сделать это - размонтировать
источник перед началом процесса копирования; другой способ - смонтировать источник в режиме только для чтения.
-l
предназначен для символических ссылок, почему он должен что-то делать с жесткими ссылками?
(Извините, это ответ, а не комментарий, у меня еще нет прав на комментарии и этот ответ требовал ответа)
Еще одно примечание, которое должно быть комментарием: это все собственное оборудование или вы используете виртуальную машину, подключенную к сети?
игнорируйте мой предыдущий комментарий относительно того, почему вы используете жесткие ссылки, Я пропустил комментарий rsnapshot
.
Было бы полезно провести тест, который сначала проверяет rsync между двумя локальными каталогами на локальном диске, а затем на вашем удаленном диске. Этот небольшой тест показывает, как работает опция -H
. Параметр -i
для ls
показывает inodes, таким образом показывая, что ссылки были сохранены без дополнительных копий.
$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
9 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt
sent 156 bytes received 59 bytes 430.00 bytes/sec
total size is 18 speedup is 0.08
$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src
./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt
./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt
Последующий тест rsync -avzHP src / хост:
Вы пробовали добавить параметр -l
?
Я знаю, что на странице руководства указано , что он включен в -a
, но страницы руководства не всегда точны на 100%.
Это долгий путь, но если вы не можете найти другое решение, я бы предложил попробовать отформатировать USB-накопитель как EXT4. Возможно, проблема в этом: https://bugzilla.samba.org/show_bug.cgi?id=7670
При наличии достаточного количества жестких ссылок в исходной папке и достаточно небольшого места назначения том, копирование с помощью rsync --hard-links может завершиться ошибкой. Rsync не работает из-за исчерпания максимального количества жестких ссылок в месте назначения <...> реальная проблема это не rsync, а основная файловая система.