Відповіді:
Скористайтеся find
командою з -user
опцією. Щось на зразок:
find / -user john
з часом з'являться всі файли, що належать користувачеві "john".
Якщо ви хочете змінити їх власність (я б запустив find
без виконання, щоб переконатися, що у вас потрібний список), то щось на кшталт:
find / -user john -exec chown harry {} \;
зробимо це.
Це пізно, але сьогодні я натрапив на це питання, тому що у мене rsync
немає --usermap
можливості.
Мій chown
(v. Chown (GNU coreutils) 8.13) пропонує вбудований рекурс ( -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
якщо мені потрібно, щоб переконатися в правильності і членства в групі. Але це в значній мірі залежить від застосування тут.