Jawaban:
Gunakan findperintah dengan -useropsi. Sesuatu seperti:
find / -user john
pada akhirnya akan muncul semua file yang dimiliki oleh pengguna "john".
Jika Anda ingin mengubah kepemilikan mereka (saya akan menjalankan findtanpa eksekusi untuk memastikan Anda memiliki daftar yang Anda inginkan), maka sesuatu seperti:
find / -user john -exec chown harry {} \;
akan melakukannya.
Ini sudah terlambat, tetapi hari ini saya menemukan pertanyaan ini karena saya rsynctidak memiliki --usermappilihan.
Saya chown(v. Chown (GNU coreutils) 8.13) menawarkan built-in recurse ( -R) dan --frompilihan sehingga masalah Anda (dan saya) bisa juga telah diselesaikan dengan menggunakan
chown -R --from=john harry /
wwwrun (id:30)dan grupnya www (id:8), dalam bahasa debian www-data (id: 33)untuk keduanya. Setelah saya menyalin file menggunakan
rsync -az /path/to/files me@debian:/path/to/
Saya menggunakan
chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/
pada mesin target (debian).
Catatan: rsync version 3.1.0 protocol version 31memiliki yang disebutkan di atas --usermapjadi jika saya punya saya bisa melakukan ketiga langkah dengan satu perintah pada mesin sumber:
rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
find -execliner untuk saya adalah pilihan terakhir, tepat sebelum melakukan sesuatu secara manual. (Juga, saya benci menulis {} \;, tetapi ini pribadi)
chown harry:harryjika saya perlu memastikan keanggotaan grup juga benar. Tapi itu sangat tergantung pada aplikasi di sini.