Уточнение необходимо: используя rsync для перемещения / usr

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

find / -user userx -group groupz \( -perm -u+r ! -perm -g+r -o \
                                    -perm -g+w ! -perm -g+w -o \
                                    -perm -g+x ! -perm -g+x \) -print

Обратите внимание, что это может вернуть любой тип файла, включая символические ссылки, для которых права доступа и владения не имеют значения во многих вариантах unix. Чтобы исключить символические ссылки, добавьте ! -type l.

Если вы хотите действовать с файлами, используйте -exec.

Если все, что вы хотите сделать, это согласовать групповые разрешения с разрешениями пользователя, вы можете свободно выполнить chmod g=u.

find / -user userx -group groupz ! -type l -exec chmod g=u {} +
3
06.11.2018, 07:19
2 ответа

Могу я предложить альтернативный метод?

  • Не пытайтесь переместить все /usr/*дерево, так как вы упомянули, что это сломало systemd, а также, кажется, не требуется для решения ваших проблем с интенсивным RW и/или большим объемом неиспользуемого пространства (вы можете просто двигаться/usr/portage)

  • Скопируйте /usr/portageна удаленный жесткий диск через rsync, работающий с LiveCD

  • Подключить жесткий диск при запуске через FSTAB куда-нибудь вроде/mnt/hdd
  • Рекурсивное удаление/usr/portage
  • Симлинкln -s /mnt/hdd/gentoo/usr/portage /usr/portage

Я предпочитаю не изменять каталоги по умолчанию(/usr/portageпо умолчанию, но я считаю, что вы можете изменить этот )без необходимости, и если я хочу, чтобы они находились на другом жестком диске, я просто создам на них символическую ссылку. Вы можете просто создать еще один раздел только для /usr/portageи смонтировать его непосредственно в /usr/portage, но я предпочитаю делать что-то вроде монтирования всех моих данных в один большой удаленный раздел в /mnt/data, а затем создавать символические ссылки на каталоги по мере необходимости. Я, вероятно, тоже /homeпоселился бы здесь.

Возможно две отдельные схемы разделов вот так:

/mnt/os_data
/mnt/my_data

Думаю, вы поняли суть.

0
27.01.2020, 21:33
  1. Могу ли я использовать команду rsyncдля перемещения /usrво время установки Gentoo, куда нужно переместить /usr? На это намекает вопрос ServerFault.

Да, вы точно можете (копировать, а не перемещать? ), но я бы всегда использовал Live USB для таких вещей. В используемой системе вполне вероятно, что какой-то процесс записывает в /usr, пока вы его копируете,что потенциально может привести к неполной передаче.

  1. Если #1 невозможно, и я использую GParted Live USB для выполнения команды rsync, меняются ли владельцы файлов/каталогов, поскольку LiveUSB основан на дистрибутиве Debian?

Нет, пока вы используете -a, разрешения должны быть сохранены для локальной копии.

  1. Каковы правильные параметры для rsync, кроме -aдля архива? Комментарии в выбранном ответе на AskUbuntu намекают на добавление -Hдля обеспечения соблюдения жестких ссылок, но тогда ОП противоречит комментариям в своем собственном ответе.

Как обсуждалось в комментариях, если вы ищете -aв man rsync, он исключает -H, -Aи -X. Эти флаги сохраняют жесткие ссылки, списки управления доступом и расширенные атрибуты. Я сильно сомневаюсь, что /usrсодержит что-либо из этого, но на всякий случай нет ничего плохого в использовании флагов. Если источник их не использует, то и сохранять нечего, поэтому rsyncбудет работать так же, как если бы вы не использовали флаги. Я также предпочитаю использовать -P, что позволяет продолжить прерванную передачу, а также показывает ход выполнения копирования.

0
27.01.2020, 21:33

Теги

Похожие вопросы