Mover arquivos e alterar a propriedade no sametime

20

No Linux (Debian, Ubuntu Mint ...),
Existe algum comando de opção ou algo que eu possa usar para transferir arquivos para outro usuário sem ter que fazer:

sudo mv /home/poney/folderfulloffiles /home/unicorn/
sudo chown -R unicorn:unicorn /home/unicorn/folderfulloffiles
    
por Kiwy 15.04.2014 / 11:45

3 respostas

27

Use rsync(1) :

rsync \
  --remove-source-files \
  --chown=unicorn:unicorn \
    /home/poney/folderfulloffiles /home/unicorn/
    
por 15.04.2014 / 11:58
11

Por @Kevin nos comentários abaixo, a sintaxe --file - |pipe é redundante. Então eu removi isso.

Isso também pode ser feito com tar :

sudo tar -C${SRC_DIR} --remove-files --group=unicorn --owner=unicorn -c ./* | 
    sudo tar -C${TGT_DIR} -pvx
    
por 15.04.2014 / 13:17
8
s=/home/poney/; f=folderfulloffiles; d=/home/unicorn/ 
sudo mv $s$f $d && sudo chown -R unicorn:unicorn $d$f

Com o mesmo tamanho das outras respostas, e note que todos estão usando as mesmas chamadas da biblioteca, estão fazendo exatamente a mesma coisa - a menos que, como observa Gilles, isso seja o mesmo sistema de arquivos e dispositivo, em cujo caso mv é realmente um renomear, o que o torna mais eficiente do que rsync ou tar .

    
por 15.04.2014 / 14:52