Carregar arquivos via cliente FTP de ftp: / remote-dir para ftp: / remote-dir

1

Estou usando o ncftpput para carregar o arquivo local no meu servidor Linux para FTP. Existe alguma maneira de fazer o mesmo, mas mover arquivos \ diretórios dentro do FTP? Como eu mencionei no título?

Estou ciente da solução de " ncftp rename ", mas não é bom para mim, pois não posso usá-lo nos meus scripts do bash.

O ncftpput é ótimo para fazer o upload de arquivos locais, mas não suporta a movimentação de arquivos de remote-dir para remote-dir .

Se você tem algum \ alternativas alternativas para ncftpput por favor, compartilhe.

Obrigado antecipadamente, EddieM

    
por EddieM 24.03.2016 / 13:29

2 respostas

1

A menos que exista uma razão que você não tenha divulgado, por usar o ncftp ao invés do ftp simples, você pode fazer isso usando o ftp antigo em um script, como tal:

#!/bin/bash
HOST='some.host.name.com'
USER='username'
PASSWD='password'
SOURCE='/home/username/file.ext'
TARGET='/var/tmp/file.ext'

ftp $HOST <<EOC
user $USER
$PASSWD
rename $SOURCE $TARGET
quit
EOC

# go on with your bash script from this point on 
    
por 24.03.2016 / 15:37
1

Você pode aproveitar Fuse

Crie 2 pontos de extremidade de diretório de fusíveis com base em uma conexão de FTP e, em seguida, faça comandos de cópia regulares ou algo mais complexo.

Suponha que você esteja usando uma distro com base no apt (mas é o mesmo com o yum e assim por diante).

Instale o pacote curlftpfs:

apt-get install curlftpfs

Crie um diretório ligado ao ftp:

mkdir /mnt/ftp1

Faça o mesmo para o segundo:

mkdir /mnt/ftp2

Conecte-se ao host1 e ao host2:

curlftpfs user1:pass1@host1 /mnt/ftp1
curlftpfs user2:pass2@host2 /mnt/ftp2

Faça um comando de cópia simples

cp -R /mnt/ftp1/somedir /mnt/ftp2

Quando terminar, pode simplesmente desmontar as 2 montagens

umount /mnt/ftp1
umount /mnt/ftp2

Observações:
Esta solução usa o ftp simples, se você quiser tirar vantagem extra da criptografia você pode usar ftps com comandos equivalentes ou no caso do shell ftp sftp, mas você disse que uma máquina é windows então a menos que esteja usando algo como cygwin eu acho que sftp está fora de pergunta.

    
por 24.03.2016 / 16:24

Tags