Tôi đang tìm kiếm một lệnh Linux có thể thay đổi quyền sở hữu tất cả các tệp thuộc về một người dùng nhất định, tốt nhất là trong một thư mục được nhắm mục tiêu, cho một người dùng được chỉ định khác.
Lệnh mơ ước của tôi sẽ trông giống như thế này ...
chuser -R --olduser tom --newuser jerry
hoặc là
chuser -R --olduser 1066 --newuser 1492
Đây là kịch bản của tôi ... Tôi có một tệp sao lưu (.tgz) với thông tin người dùng và nhóm được lưu giữ trong đó. Nó được lấy từ một máy chủ web chạy Apache và MySQL. Các tệp trong bản sao lưu là từ khắp hệ thống và chứa các tệp từ một số người dùng khác nhau và một số tài khoản loại hệ thống và đó là chìa khóa mà khi được khôi phục trên máy chủ mới, các cài đặt sẽ không bị mất. Vấn đề là người dùng trên máy các tệp đang được khôi phục để không khớp với các tệp trong tệp sao lưu. Chẳng hạn, cả hai máy đều có người dùng MySQL nhưng họ có id người dùng khác nhau và có một số id người dùng tồn tại trên cả hai máy thuộc về người dùng khác nhau. Điều này có nghĩa là không có cách nào để đồng bộ hóa người dùng trên máy mới với máy trên máy cũ.
Tôi có thể tìm thấy tất cả các tệp người dùng bằng lệnh find như thế này ...
find /decompressed-backup-dir -uid 1050
hoặc là
find /decompressed-backup-dir -user tom
Nếu, như tôi nghi ngờ, không có cách nào để làm những gì tôi muốn với một lệnh duy nhất thì có lẽ có cách nào để chuyển kết quả của lệnh find sang lệnh khác để xử lý thay đổi quyền sở hữu?
Tôi có thể làm điều này với tập lệnh PHP nhưng có 4GB và hàng chục nghìn tệp trong bản sao lưu vì vậy tôi không muốn sử dụng PHP hoặc Perl nhưng tôi sẽ hài lòng với tập lệnh shell có thể xử lý nó.
-uid
tôi đã sử dụng-user