Jawaban:
Gunakan find
perintah dengan -user
opsi. 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 find
tanpa 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 rsync
tidak memiliki --usermap
pilihan.
Saya chown
(v. Chown (GNU coreutils) 8.13) menawarkan built-in recurse ( -R
) dan --from
pilihan 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 31
memiliki yang disebutkan di atas --usermap
jadi 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 -exec
liner untuk saya adalah pilihan terakhir, tepat sebelum melakukan sesuatu secara manual. (Juga, saya benci menulis {} \;
, tetapi ini pribadi)
chown harry:harry
jika saya perlu memastikan keanggotaan grup juga benar. Tapi itu sangat tergantung pada aplikasi di sini.