Вопрос или проблема
Я пытался скопировать некоторые данные, используя cwRsync на Windows, и пока это приводило только к неудачам.
Копирование выполняется с сетевого ресурса на другом ПК на локальный диск, на Windows 10. Без SSH.
Используемая команда:
rsync -rltDHUN --no-p --no-o --no-g --verbose --progress --stats
Основная проблема заключается в том, что rsync не воссоздает жесткие ссылки и символические ссылки/связи.
Вместо символических ссылок я получаю файлы без расширения, которые ничего не делают.
Вместо жестких ссылок я получаю обычные файлы, которые не связаны.
Лог говорит, что создано 263 ссылки, хотя в исходных данных их десятки тысяч.
В чем может быть проблема?
Провел еще несколько тестов и, похоже, проблема в сетевом ресурсе.
Для всего, что копируется локально, как на исходном, так и на целевом ПК, ссылки воссоздаются. Проблема в том, что место назначения копирования находится на NVMe-диске, а на исходном ПК нет возможности установить такой диск для локального копирования, нет слота.
Ответ или решение
Теория
Перед вами задача копирования данных с использованием cwRsync на Windows, которая сопряжена с проблемами воссоздания жёстких ссылок и символьных ссылок (symlinks). Rsync — это утилита, популярная в UNIX-системах для эффективного копирования и синхронизации файлов между двумя компьютерами либо в пределах одной системы. При этом cwRsync представляет собой адаптацию rsync для Windows.
В данной ситуации вы используете следующую команду:
rsync -rltDHUN --no-p --no-o --no-g --verbose --progress --stats
Вот краткое описание ключей, используемых в этой команде:
-r
(recursive): копирование каталогов рекурсивно.-l
(links): копирование символических ссылок как символические ссылки.-t
(times): сохранение временных меток.-D
: это комбинация ключей, включающая--devices
и--specials
, но в Windows эти опции не имеют большого значения.-H
(hard-links): сохранение жёстких ссылок.-U
: избегает временных файлов в процессе копирования.-N
: не синхронизировать временные метки, если файл содержательно остался прежним.--no-p --no-o --no-g
: эти опции предотвращают сохранение прав доступа, владельцев и групп, что на Windows также может быть актуально.
На системе одного и того же компьютера ссылки удается сохранить, но при работе с сетевым хранилищем происходит сбой. Этот момент является ключевым в решении проблемы.
Пример
Ваши тесты показали, что когда исходные и целевые файлы находятся локально, все ссылки корректно воссоздаются, даже если используется другой компьютер. Это указывает на то, что проблема не в неудачных параметрах команды rsync, а в настройках самого сетевого хранилища или специфике использования сетевых путей на Windows.
Применение и Рекомендации
-
Проверьте права доступа к сетевым ресурсам. Проверьте, имеются ли необходимые права для чтения и написания на сетевом хранилище. Возможно, ссылки не могут быть корректно скопированы из-за ограничений прав.
-
Используйте UNC путь. На Windows рекомендуется использовать UNC (Universal Naming Convention) пути для сетевых ресурсов, либо монтировать сетевой ресурс как отдельный диск.
-
Проверьте поддержки на уровне файловой системы. Убедитесь, что файловая система на сетевом диске поддерживает символьные и жесткие ссылки. Например, NTFS поддерживает, тогда как FAT32 — нет.
-
Смонтируйте сетевой диск. Если это возможно, подключите сетевой диск локально через CIFS/SMB как диск в системе, что может оказаться более эффективным методом, чем доступ по сетевому пути.
-
Технические ограничения Windows. Windows может иметь ограничения на использование символических ссылок, особенно это касается устаревших версий или специфичных настроек в новой ОС.
-
Анализ ошибок. Анализируйте логи rsync более подробно для выявления конкретных ошибок, связанных с неудачами создания ссылок. В вашем лог-файле было указано, что создано 263 ссылки. Возможно, стоит углубиться и выяснить, почему оставшиеся не были обработаны.
-
Тест с другим ПО. Попробуйте использовать другое ПО для копирования данных, например, robocopy, чтобы проверить, не повторяются ли проблемы. Это может подтвердить или исключить проблемы специфические для rsync.
-
Техническая поддержка. Если ничего из вышеперечисленного не решает проблему, возможно, стоит обратиться в техническую поддержку разработчиков cwRsync или вашего сетевого оборудования для консультации.
Проблема с созданием жестких и символических ссылок является комплексной и может потребовать мультивекторного подхода для решения — начиная от конфигурации ПО и заканчивая физической архитектурой хранения данных.