Como já foi mencionado, este é um sintoma clássico de finais de linha incompatíveis. Nesse caso, o sistema de origem é parecido com o Unix (Linux) e o destino é semelhante ao Windows. No Windows, as novas linhas do Unix não são reconhecidas, portanto, o arquivo de texto aparece como uma única linha longa. Nesses casos, você deve fazer uma conversão de nova linha.
Embora o protocolo FTP tenha a conversão de nova linha, o Curl não o suporta, mesmo se forçar a transferência ASCII usando a opção -Q '+TYPE A'
.
A opção mais conveniente seria fazer a conversão no Linux antes da transferência usando um script:
#!/bin/sh
SRCFILE=~/hardlog.log
DSTLOGIN=user:secret
DSTURL=ftp://10.0.0.7/ # the URL must end by a slash
unix2dos <"$SRCFILE" | curl -T- "$DSTURL$(basename "$SRCFILE")" -u"$DSTLOGIN"
Se o utilitário unix2dos
não estiver disponível em seu sistema, você poderá usar sed 's/$/\r/'
ou awk '{printf("%s\r\n",$0)}'
. Veja Alternativas para conversão unix2dos .
Outra opção é usar um cliente que suporte transferências ASCII como LFTP . Exemplo:
lftp -e "put -a $HOME/hardlog.log ; exit" -u user,secret 10.0.0.7
Observação: No Windows existem editores de texto capazes de trabalhar com novas linhas do Unix, como o Wordpad , ou de terceiros: Notepad ++ , < em> Notepad2 . Os dois últimos editores também podem ser usados para conversões de nova linha.