Ubuntu Linux: копирование прав на файлы / папки с одной машины на другую

Мне была поручена передача большого (Тысячи файлов) Magento Installation на другой сервер. Будучи родным для Windows, я просто загрузил файлы на свой компьютер и FTP'd их обратно.

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

Есть ли способ синхронизировать / копировать права доступа к файлам? Я не уверен, что пользователи / группы должны быть настроены одинаково? Из внешнего вида мне просто нужно, чтобы числовые разрешения были правильными.

Это полностью отдельные серверы, и файлы / папки будут идентичны. Ubuntu 12.04 – это ОС на «новом» сервере.

Вероятно, вы хотите использовать rsync . Чтобы это получилось, вам нужно установить его на обе машины (если он еще не установлен). После этого просто запустите (как root):

 rsync -avrHP root@source-host:/path/to/source-directory/ /path/to/destination 

это предполагает, что:

  • Вы выполняете команду на целевом узле. Если вы хотите запустить его на исходном узле, просто удалите часть root@source-host: из первого аргумента и добавьте аргумент root@destination-host: во второй. Примечание: невозможно запустить rsync с двумя удаленными хостами; только один из концов может быть «удаленным» концом.
  • Вход в систему поверх ssh как root возможен. Обычным делом сегодня является отключить такой доступ по соображениям безопасности. Однако для того, чтобы rsync мог фактически копировать разрешения, он должен запускаться как root на обоих концах. Если он отключен, проверьте /etc/ssh/sshd_config , ищите PermitRootLogin . Если установлено значение no , переключите его на yes и перезапустите sshd . Не забудьте снова отключить его после копирования файлов!
  • Пользователи, имеющие право собственности на файлы в исходном хосте, существуют на целевом узле. Если нет, некоторые биты разрешения могут быть скопированы неправильно.

Обратите внимание, что вам не нужно сначала удалять уже скопированные файлы. Rsync обнаружит, что файлы существуют, но синхронизирует разрешения. Если есть некоторые файлы, которые были изменены с момента их копирования, rsync также синхронизирует их содержимое.

В Linux вы можете создавать резервные копии и восстанавливать права собственности и разрешения (включая списки управления доступом, но не контексты SELinux) с помощью инструментов ACL . Запустите getfacl -R > permissions.txt в каталоге верхнего уровня на компьютере с правильными разрешениями. Скопируйте файл вывода на целевой компьютер и запустите setfacl --restore=permissions.txt в целевом каталоге setfacl --restore=permissions.txt .

Если вам нужно скопировать права собственности и разрешения, вам нужно сделать часть восстановления как root.

Запускать как root rsync -og возможно, это то, что вы ищете.

Из manpage:

 -o, --owner This option causes rsync to set the owner of the destination file to be the same as the source file, but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super options). Without this option, the owner of new and/or transferred files are set to the invoking user on the receiving side. The preservation of ownership will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion). -g, --group This option causes rsync to set the group of the destination file to be the same as the source file. If the receiving program is not running as the super-user (or if --no-super was specified), only groups that the invoking user on the receiving side is a member of will be preserved. Without this option, the group is set to the default group of the invoking user on the receiving side. The preservation of group information will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).