Yanıtlar:
Kullanım findile komutu -userseçeneği. Gibi bir şey:
find / -user john
sonunda "john" kullanıcısının sahip olduğu tüm dosyaları açar.
Sahipliklerini değiştirmek istiyorsanız (İstediğiniz findlisteye sahip olduğunuzdan emin olmak için yürütme olmadan çalıştırırım), o zaman şöyle bir şey:
find / -user john -exec chown harry {} \;
yapacağım.
Bu geç, ama benim çünkü bugün bu soruya rastladım rsyncyok --usermapseçeneği.
Benim chown(v. Chown (GNU coreutils) 8.13), yerleşik bir recurse ( -R) ve bir --fromseçenek sunar, böylece (ve benim) probleminiz de kullanılarak çözülebilir
chown -R --from=john harry /
wwwrun (id:30)ve grubu www (id:8), www-data (id: 33)her ikisi için debian dilinde . Dosyaları kullanarak kopyaladıktan sonra
rsync -az /path/to/files me@debian:/path/to/
kullandım
chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/
hedef (debian) makinede.
Not: rsync version 3.1.0 protocol version 31Yukarıda belirtilenler --usermapbu yüzden kaynak makinede bir komutla üç adımı da yapabilseydim:
rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
find -execbenim için bir liner sadece el şeyler yapmadan önce, en son çare olduğunu. (Ayrıca, yazmaktan nefret ediyorum {} \;, ama bu kişisel)
chown harry:harryGrup üyeliğinin de doğru olduğundan emin olmam gerekirse genellikle UID kullanır ve çalıştırırım . Ancak bu büyük ölçüde buradaki uygulamaya bağlıdır.