Yanıtlar:
Kullanım find
ile komutu -user
seç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 find
listeye 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 rsync
yok --usermap
seçeneği.
Benim chown
(v. Chown (GNU coreutils) 8.13), yerleşik bir recurse ( -R
) ve bir --from
seç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 31
Yukarıda belirtilenler --usermap
bu 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 -exec
benim 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:harry
Grup ü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.