Dosyaları bir seferde taşıyın ve sahipliğini değiştirin


23

Linux'ta (Debian, Ubuntu Mint ...),
herhangi bir seçenek komutu veya herhangi bir şey yapmadan dosyaları başka bir kullanıcıya aktarmak için kullanabileceğim bir şey var mı:

sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles

Yanıtlar:


30

Kullanım rsync(1):

rsync \
  --remove-source-files \
  --chown=unicorn:unicorn \
    /home/poney/folderfulloffiles /home/unicorn/

4
Teşekkürler @dawud - Bu benim günlük "bilmiyordum ve nasıl özledim anlayamıyorum şeyler"
Jenny D

1
@JennyD usermapve groupmapseçeneklerine de göz atmak isteyebilirsiniz .
dawud

2
Ama bu değil mv, değil mi? Sadece kopyalar mı? Yoksa öyle mvmi?
mikeserv

@mikeserv tam olarak not, benim düzenlemeyi bakınız
Dâvud

11

Aşağıdaki yorumlarda @Kevin başına --file - |pipesözdizimi gereksizdir. Ben de kaldırdım.

Bu, aşağıdakilerle de yapılabilir tar:

sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* | 
    sudo tar -C${TGT_DIR} -pvx

-f -Her iki uçta da ima edildiğinden eminim .
Kevin

1
@Kevin Burada değil. İşte belirtildi.
mikeserv

Evet, siz belirttiniz, ancak gerekli değil. Komutunuz f -parça olmadan iyi çalışıyor .
Kevin

8
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/ 
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f

Diğer cevaplarla yaklaşık aynı uzunluktadır ve hepsi kaputun altında aynı kütüphane çağrılarını kullandığından, hepsinin tamamen aynı şeyi yaptığını unutmayın - Gilles'in belirttiği gibi, bu aynı dosya sistemi ve cihazda değilse , bu durumda mvgerçekten bir yeniden adlandırma olur, bu da rsyncveya ' dan daha verimli olmasını sağlar tar.


Bu :bir .uğraşmak yerine değil chownmi?
Kiwy

2
Hmmm - ilginç. Man sayfasında böyle, ama hep bir nokta kullandım. Yaklaşık on yıl önce GNU kılavuzundan çıkardıkları anlaşılıyor çünkü POSIX taşınabilir değil. Yine de çalışıyor (linux üzerindeki GNU coreutils'ten chown ile), ancak yukarıda değiştireceğim.
goldilocks

1
chowntipik olarak hem alır :ve ..
slm

1
Biraz daha kısa yapabilirsiniz: nu=unicorn h=/home f=folderfulloffiles ; sudo mv $h/poney/$f $h/$nu/$f ; sudo chown -R ${nu}:$nu $_- ama cevabınızın anlamı bu değil, ki bu iyi ve zaten kaldırıldım.
mikeserv

3
Bu çözüm, kaynak ve hedef aynı dosya sisteminde ise, dosyanın kopyalanmak yerine taşınması ve orijinalin silinmesi avantajına sahiptir.
Gilles 'SO- kötü olmayı bırak'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.