Odpowiedzi:
Użyj find
polecenia z -user
opcją. 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 find
bez 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ż rsync
nie mam --usermap
opcji.
Mój chown
(w. Chown (GNU coreutils) 8.13) oferuje wbudowaną funkcję recurse ( -R
) i --from
opcję, 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 31
ma wyżej wymienione, --usermap
wię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 -exec
Jedna wkładka jest dla mnie ostatecznością, tuż przed robi rzeczy ręcznie. (Poza tym nie lubię pisać {} \;
, ale to
chown harry:harry
jeśli muszę upewnić się, że członkostwo w grupie też jest prawidłowe. Ale to zależy w dużej mierze od zastosowania tutaj.