Ответы:
Используйте find
команду с -user
опцией. Что-то вроде:
find / -user john
в конечном итоге включит все файлы, принадлежащие пользователю "Джон".
Если вы хотите изменить их владельца (я бы запустил find
без выполнения, чтобы убедиться, что у вас есть список, который вы хотите), то что-то вроде:
find / -user john -exec chown harry {} \;
сделаю это.
Уже поздно, но сегодня я наткнулся на этот вопрос, потому что у меня rsync
нет --usermap
выбора.
My chown
(v. Chown (GNU coreutils) 8.13) предлагает встроенную функцию recurse ( -R
) и --from
опцию, чтобы ваша (и моя) проблема также могла быть решена с помощью
chown -R --from=john harry /
wwwrun (id:30)
и группа www (id:8)
, в Debian www-data (id: 33)
для обоих. После того, как я скопировал файлы, используя
rsync -az /path/to/files me@debian:/path/to/
я использовал
chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/
на целевой (Debian) машине.
Примечание. rsync version 3.1.0 protocol version 31
Имеется ли вышеупомянутое, --usermap
поэтому, если бы у меня было это, я мог бы выполнить все три шага с помощью одной команды на исходном компьютере:
rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
find -exec
лайнер для меня - последнее средство перед тем, как делать что-то вручную. (Кроме того, я ненавижу писать {} \;
, но это личное)
chown harry:harry
если мне нужно убедиться, что членство в группе тоже верно. Но это сильно зависит от приложения здесь.