Posso fazer upload de uma pasta inteira usando o FTP?

26

Eu preciso fazer o upload de uma pasta completa usando o FTP. Existe alguma opção para transferir uma pasta e todo o seu conteúdo de uma só vez?

    
por Jeff Atwood 11.04.2011 / 19:59

11 respostas

23

Se você estiver usando um cliente ftp de linha de comando padrão, o comando MPUT permitirá que você transfira todos os arquivos correspondentes a um padrão (estilo shell glob), portanto MPUT * enviará todos os arquivos no diretório atual . Também há MGET para recuperar arquivos que correspondem a um padrão.

Por padrão, MPUT e MGET solicitarão a transferência de cada arquivo antes de fazer isso. Você provavelmente deseja desativar o prompt com o comando "PROMPT" (sem argumento; é uma alternância).

    
por 09.05.2011 / 13:50
18

Você pode usar o ncftpput. Faça o seguinte:

  1. Instale o ncftp:

    yum install ncftp
    

o yum está em minúsculas.

Alternativamente:

    apt-get install ncftp

2. Execute o seguinte comando:

    ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
    
por 22.04.2014 / 12:20
8

Use um cliente de FTP como LeechFTP ou FileZilla ou algo similar. Muitas pessoas juram por CuteFTP, mas é shareware última vez que verifiquei. Todo o suporte a transferência de uma pasta inteira, incluindo a estrutura de diretórios.

    
por 12.04.2011 / 15:45
5
  1. faça o usuário / cliente compactar a pasta
  2. faça o upload do arquivo zip
  3. descompacte o lado do servidor de pastas .
por 11.04.2011 / 20:03
2

Um tutorial simples para outros novatos do Windows, como eu, que acabam aqui:

A maneira mais fácil de fazer upload de uma pasta inteira (com todas as subpastas e arquivos nelas) é:

  1. Faça o download do Cliente NcFTP (é grátis, mas você pode doar) deste link .
  2. Escolha NcFTP Client 3.2.5 para Microsoft Windows na lista.
  3. Instale-o.
  4. Quando terminar, uma pequena janela do CMD com um ícone de cerejas será exibida. Você não precisa disso.
  5. Basta abrir uma janela CMD padrão e digitar:
    ncftpput -u *yourUserNameHere* -p *yourUserPasswordHere* -R *www.yourWebsite.com* /
                     _C:\yourFolderDirectoryHere\*_
    (como uma linha).

Observe que:

  • -R é um sinalizador para "recursivo"; faz com que o comando copie todas as subpastas recursivamente
  • / (slash) é o diretório raiz do seu site
  • C:\yourFolderDirectoryHere\* seleciona tudo dentro de C:\yourFolderDirectoryHere
por 18.11.2014 / 19:33
2

Ofereço uma resposta que - embora seja pura força bruta e não elegante - foi a única coisa que funcionou para mim na linha de comando. Eu criei uma lista dos arquivos e os coloquei em um script:

gere sua lista de arquivos:

find my-dir -exec echo "put /Users/username/"{} {}  \;

copie e cole-os no script:

#!/bin/bash

hostname="my-ftp-host"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password

binary
cd 123456
{COPY THE LIST HERE}
quit
EOF
    
por 31.01.2017 / 19:48
1

Verifique este fora .

Você também pode criar programaticamente uma pasta no servidor e, em seguida, carregue todos os ficheiros para essa nova pasta.

    
por 11.04.2011 / 20:03
0

O FileZilla é ótimo para isso. Se você não quiser baixar / instalar nada, isso pode ser feito com o Internet Explorer. Entre nas opções avançadas e selecione Enable FTP folder view (outside of Internet Explorer) . Em seguida, você pode apontar uma janela do explorador para o servidor FTP e arrastar e soltar arquivos e pastas entre as janelas do explorador.

    
por 12.04.2011 / 15:50
0

O Firefox tem um plug-in chamado FireFtp que é um ótimo cliente ftp.

    
por 12.04.2011 / 16:20
0

O diretório de destino é um arquivo zip. Você pode copiar o arquivo zip completo para o servidor ftp usando o código abaixo.

//Taking source and target directory path
string sourceDir = FilePath + "Files\" + dsCustomer.Tables[0].Rows[i][2].ToString() + "\ConfigurationFile\" + dsSystems.Tables[0].Rows[j][0].ToString() + "\XmlFile";

string targetDir = FilePath + "Files\Customers\" + CustomerName + "\" + SystemName + "\";                                                                                       
foreach (var srcPath in Directory.GetFiles(sourceDir))
{
    //Taking file name which is going to copy from the sourcefile                                              
    string result = System.IO.Path.GetFileName(srcPath);

    //If that filename exists in the target path
    if (File.Exists(targetDir + result))
    {
        //Copy file with a different name(appending "Con_" infront of the original filename)
        System.IO.File.Copy(srcPath, targetDir + "Con_" + result);
    }
    //If not existing filename
    else
    {
        //Just copy. Replace bit is false here. So there is no overwiting.
        File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false);
    }
}         
    
por 15.06.2016 / 06:20
0

Minha resposta é a variação da resposta do @dgig.

Você pode listar todos os arquivos e salvá-los (incluindo o comando put) em um arquivo:

find my-dir -exec echo "put /Users/username/"{} {} > list.txt \; 

e depois usar o sftp para processar o arquivo:

sftp -C -b sftpbatchfile.txt name@server

-C é para compactação, -b é para o arquivo em lote

    
por 25.03.2017 / 16:21

Tags