Eu tenho uma grande quantidade de dados (vários GB) em uma unidade remota, montada de forma transparente via nfs. Eu gostaria de copiar esses arquivos em um subdiretório de onde eles já estão residindo, para que tudo permaneça no mesmo disco físico. Por esse motivo, gostaria de evitar uma viagem de ida e volta desnecessária pela rede.
Parece que cp files* subdir
faz a coisa ingênua e lê todos os dados na memória e depois os grava de volta. Isso é verdade? Existe um comando especial que faz a cópia real inteiramente no servidor ao qual o disco está fisicamente conectado?
cp
) ou mover (como emmv
)? Se você mover os arquivos, não vejo por que deve haver qualquer round-trip.Respostas:
Parece que os arquivos cp * subdir fazem a coisa ingênua e lê todos os dados na memória e depois os gravam novamente. Isso é verdade?
Sim.
Existe um comando especial que faz a cópia real inteiramente no servidor ao qual o disco está fisicamente conectado?
Não, a menos que você possa fazer login na máquina remota com ssh e fazer a cópia lá.
EDIT: Há algum trabalho em andamento para adicionar "cópia do lado do servidor" à versão 4.2 do protocolo NFS (atual é 4.1). Veja, por exemplo, http://www.usenix.org/events/fast11/posters_files/Lentini.pdf . Observe que o uso desse recurso exigiria a) clientes e servidores NFS que o suportam b) um novo syscall para o SO do cliente (talvez reflink ou copyfile ()?) C) suporte para o uso do novo syscall nos utilitários usuais (cp, rsync etc.). Meu palpite será que levará pelo menos vários anos até que tudo isso veja a luz do dia.
fonte