Câu trả lời:
Sử dụng find
lệnh với -user
tùy chọn. Cái gì đó như:
find / -user john
cuối cùng sẽ bật lên tất cả các tệp thuộc sở hữu của người dùng "john".
Nếu bạn muốn thay đổi quyền sở hữu của họ (tôi sẽ chạy find
mà không thực hiện để đảm bảo bạn có danh sách bạn muốn), thì đại loại như:
find / -user john -exec chown harry {} \;
sẽ làm điều đó.
Điều này là muộn, nhưng hôm nay tôi tình cờ gặp câu hỏi này vì tôi rsync
không có --usermap
lựa chọn này.
My chown
(v. Chown (GNU coreutils) 8.13) cung cấp một recurse ( -R
) tích hợp sẵn và một --from
tùy chọn để vấn đề của bạn (và của tôi) cũng có thể được giải quyết bằng cách sử dụng
chown -R --from=john harry /
wwwrun (id:30)
và nhóm của nó www (id:8)
, bằng debian www-data (id: 33)
cho cả hai. Sau khi tôi sao chép các tập tin bằng cách sử dụng
rsync -az /path/to/files me@debian:/path/to/
Tôi đã sử dụng
chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/
trên máy đích (debian).
Lưu ý: rsync version 3.1.0 protocol version 31
đã đề cập ở trên --usermap
vì vậy nếu tôi có điều đó tôi có thể thực hiện cả ba bước với một lệnh trên máy nguồn:
rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
find -exec
lót cho tôi là một phương sách cuối cùng, ngay trước khi làm mọi thứ bằng tay. (Ngoài ra, tôi ghét viết lách {} \;
, nhưng đây là vấn đề cá nhân)
chown harry:harry
nếu tôi cần đảm bảo rằng thành viên nhóm cũng đúng. Nhưng điều đó phụ thuộc rất nhiều vào ứng dụng ở đây.