Ответы:
Используйте 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если мне нужно убедиться, что членство в группе тоже верно. Но это сильно зависит от приложения здесь.