Odpowiedzi:
Użyj findpolecenia z -useropcją. Coś jak:
find / -user john
ostatecznie wyświetli wszystkie pliki należące do użytkownika „John”.
Jeśli chcesz zmienić ich własność (uruchomiłbym findbez wykonywania, aby upewnić się, że masz listę, którą chcesz), a następnie coś takiego:
find / -user john -exec chown harry {} \;
zrobię to.
Jest późno, ale dzisiaj natknąłem się na to pytanie, ponieważ rsyncnie mam --usermapopcji.
Mój chown(w. Chown (GNU coreutils) 8.13) oferuje wbudowaną funkcję recurse ( -R) i --fromopcję, dzięki której Twój (i mój) problem można również rozwiązać za pomocą
chown -R --from=john harry /
wwwrun (id:30)i grupa www (id:8), w www-data (id: 33)obu przypadkach debian . Po skopiowaniu plików za pomocą
rsync -az /path/to/files me@debian:/path/to/
użyłem
chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/
na maszynie docelowej (debian).
Uwaga: rsync version 3.1.0 protocol version 31ma wyżej wymienione, --usermapwięc gdybym miał, mógłbym wykonać wszystkie trzy kroki za pomocą jednego polecenia na maszynie źródłowej:
rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
find -execJedna wkładka jest dla mnie ostatecznością, tuż przed robi rzeczy ręcznie. (Poza tym nie lubię pisać {} \;, ale to
chown harry:harryjeśli muszę upewnić się, że członkostwo w grupie też jest prawidłowe. Ale to zależy w dużej mierze od zastosowania tutaj.