Назад | Перейти на главную страницу

rsync поддерживает права собственности и разрешения между linux и windows ssh

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

У меня есть Linux-сервер, и я пытаюсь создать резервную копию указанного сервера на Windows-машине через ssh. Я использую rsync и запускаю его из окна с помощью cygwin. Проблема заключается в том, что права и права собственности с сервера Linux, с которого извлекаются файлы, изменяются на пользователя окна, извлекающего файлы с помощью cygwin. Например, тестовый файл linux принадлежит пользователю dog. Пользователь cat на компьютере с Windows запускает команду с помощью cygwin для rsync файлов. Когда я смотрю на скопированный тестовый файл, он больше не принадлежит пользователю dog. Теперь они заменены на пользователя cat, и группа просто говорит «нет». Надеюсь, это все достаточно ясно. Разрешения тоже не копируются правильно. На компьютере с Windows остается 644 независимо от исходных разрешений.

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

rsync -av -e "ssh -p 44" root @ blahblah: / home / dog / backup / backup /

Я немного объясню это. Да, я запускаю его через root, так что я могу копировать даже файлы root. Именно через закрытый ключ принудительно выполняется команда или что-то еще, что она вызывается, чтобы запускать только определенные команды, чтобы уменьшить потенциальные дыры в безопасности, вызванные этим. (я знаю, что вы можете запустить rsync через sudo, но мне очень повезло с этим, и я действительно не понимаю, что лучше, если вы можете указать единственное, что разрешено делать пользователю root). Команда "noacl", которая есть у cygwin в папке fstab, уже добавлена ​​в per (https://cygwin.com/ml/cygwin/2011-02/msg00116.html). Насколько я понимаю, это должно препятствовать тому, чтобы окна пытались понять, как Linux делает user: group / permissions и изменяет это amok. К сожалению, это никак не повлияло, и я только на 80% уверен, что сделал это правильно. Также машина Windows, инициирующая резервное копирование, является администратором. Единственное, о чем я могу догадаться, - это я много читал о том, что обе стороны должны быть root, чтобы все скопировалось правильно. Из того, что я видел, cygwin не может быть запущен как root или даже sudo, и я предполагаю, что быть администратором и запускать cygwin как администратор было бы эквивалентом. Может быть нет.

Я действительно не понимаю, что я делаю не так или почему не работает. Если rsync просто не может копировать файлы Linux, не меняя ничего, тогда почему rsync является жизнеспособным вариантом, когда дело доходит до резервного копирования вашего сервера на рабочий стол? Мне что-то не хватает или я просто слишком много прошу от этой программы? Любая помощь или просветление, которые вы можете мне дать, были бы потрясающими. Это сводит меня с ума. (Извините, это так долго. Я стараюсь ответить на свой вопрос как можно более подробно, чтобы облегчить задачу для всех участников)

Файловая система Windows и файловая система Linux сильно отличаются. Я не думаю, что NTFS будет обрабатывать разрешения Linux. Rsync не сможет их сопоставить.

На ум приходят 2 решения:

  • Создайте tar.gz или tar.bz2 из файлов Linux и, используя netcat, вы можете сохранить прямо в файловую систему Windows.
  • Создайте большой необработанный файл в Windows, поделитесь с CIFS, смонтируйте в Linux как loopback, отформатируйте его как ext3 / ext4 / или что-нибудь еще и выполните rsync с ним. Я сделал это для резервного копирования моей рабочей станции на общий ресурс samba. Это сложно. Вам нужно отправить несколько команд "синхронизации" из окна Linux. Если хотите, я могу помочь вам с более подробной информацией об этой настройке.