Não use ftp. O problema que você está tendo provavelmente está relacionado à confusão geral da direção da conexão no FTP. O FTP usa duas portas: uma conexão de comando e uma conexão de dados. Tradicionalmente, a conexão de comando era do cliente para o servidor, e a conexão de dados do servidor para o cliente!
O PASV é o oposto; instrui o servidor a escutar a conexão de dados do cliente e informar ao cliente seu número de porta. Parece que isso (inesperado para muitos) comportamento é o que está mordendo você.
No entanto, na minha opinião, continuar a usar o FTP não é uma boa alternativa hoje. É simplesmente desatualizado, segurança e protocolo sábio.
Você tem várias alternativas ao FTP. Se você usar autenticação, o scp / sftp é uma boa alternativa. Requer exatamente uma porta, é autenticada e criptografada.
Se você precisar de envios anônimos, o (s) http (s) é uma boa alternativa. Por meio de uma solicitação POST ou com o WebDAV. Http pode também ser configurado para usar autenticação e pode ser criptografado com TLS (https). Ele também abre apenas um único canal para dados e comandos.
FTP é um protocolo de 40 anos. Está caindo fora de uso e, como conseqüência, o software não está recebendo tanta atenção quanto os servidores web e servidores ssh mais populares e, portanto, há uma chance maior de vulnerabilidades sérias sobreviverem no código-fonte.
Além disso, o comando para SCP seria muito mais simples: scp * $user@$host:$targetfolder
- e você poderia usar autenticação baseada em chave para evitar senhas no script!