Como não copiar, mas mover arquivos de um servidor para outro (ambos Linux)?
man scp
não me deu nada de útil. Não posso usar 'scp' e 'rm' porque devo garantir que o arquivo seja transferido com êxito. Se houver algum erro durante a transferência, o arquivo não deve ser excluído.
Talvez eu devesse usar o código de saída de alguma forma, mas como? Além disso, existem muitos arquivos e, se o último arquivo falhar, seria uma opção não tão boa manter todo o conjunto de arquivos transferidos com êxito.
Talvez haja algo além de SCP?
linux
networking
scp
Putnik
fonte
fonte
-e ssh
é o padrão implícito há muitos anos, geralmente não há mais necessidade de usar esse parâmetro.smv() { rsync -az --remove-source-files "$@"; }
à minha caixa de ferramentas. Obrigado.Use em
rsync
vez descp
:Mais informações com
man rsync
.fonte
Essa pergunta foi respondida com perfeição e a resposta aceita, mas como ela foi colocada no topo da primeira página, pensei em pelo menos tentar respondê-la com mais precisão, se menos com elegância. Sim, você pode usar o código de retorno de
scp
, e eu faço isso frequentemente. Embash
:Entendo seu argumento sobre vários arquivos para copiar e manipular a falha corretamente na pilha, assim, para vários arquivos:
Este último só é prático se você estiver usando
ssh-agent
, mas espero que esteja.fonte
-l
flag. Por exemplo,-l 8192
para limitar transferências a 8192 kb / sna minha situação, a porta ssh não é 22, então
funciona para mim.
fonte
se você tiver um servidor de destino mais antigo como eu, não poderá usar
mas você tem que usar
em vez de.
fonte
Se não for um problema em duas etapas, você poderá
scp
copiar o arquivo do servidor remoto e executarssh -e "rm /path/to/file"
para remover do disco. Ao mover arquivos, especialmente entre máquinas, as coisas podem dar errado; portanto, pode ser bom executar a cópia e a exclusão separadamente, e somente remova o arquivo quando tiver certeza de que foi copiado com êxito primeiro.fonte