Como copiar arquivos do linux para o windows usando o winscp de uma pasta que contém milhões de arquivos

0

Eu preciso copiar arquivos de uma máquina linux para uma máquina windows onde as únicas portas que podem ser abertas são para SSH (22).
Eu posso conectar a máquina linux usando WinSCP, mas o problema é que uma vez que eu tento navegar para a pasta desejada, o WinSCP fica preso, pois a pasta contém milhões de registros. Basicamente eu não me importo com os arquivos que copio e ficaria feliz em encontrar uma solução que me permita apenas copiar os últimos 200 arquivos.
Alguma idéia?
Eu tentei usar ls -f | less , mas isso não funcionou.

    
por Ittai 06.09.2011 / 08:54

3 respostas

1

Se você puder desistir do requisito do WinSCP e estiver disposto a usar o Cygwin , esse recurso de duas linhas fará o seguinte:

$ ssh linuxbox 'ls -t1 /path/to/files | head -200' > files.list
$ rsync -ave ssh --files-from=files.list linuxbox:/path/to/files local/dest

Isso funcionará onde o WinSCP não funcionará, porque não está tentando criar uma imagem GUI de milhões de arquivos. Ele meramente solicita uma lista dos 200 arquivos mais recentemente tocados da caixa remota, depois os transfere para a máquina local pelo nome.

rsync e ssh não estão na instalação padrão do Cygwin. Certifique-se de selecioná-los quando chegar à tela de seleção de pacotes em o instalador do Cygwin .

    
por 06.09.2011 / 14:31
0

Só para ter certeza de que entendi sua pergunta da maneira certa:
Você só pode se sentar na frente da máquina Windows e não da máquina Linux, certo?

Embora eu não esteja familiarizado com as especialidades do WinSCP, deve ser possível especificar opções adicionais de SCP / SSH em algum lugar nas configurações do WinSCP.

Eu acho que, para listar os arquivos contidos em um diretório, o WinSCP é primeiro conectado via ssh e, em seguida, listando-os com ls .
Certifique-se de que a conexão ssh use compactação. Isso pode ser feito com o parâmetro ssh -C : ssh -C
Na maioria dos casos, isso diminui significativamente o volume a ser transferido e me poupou muitos problemas no passado.

Ativar a compactação para SCP é, infelizmente, um pouco complicado. scp tem o parâmetro -o , que define um par key value das opções definidas por ssh_config .
No seu caso, você pode usar Compression yes , pois o padrão é no .

No entanto, a compactação reduziu a largura de banda, mas aumenta a carga nos processadores em ambos os lados (host e cliente). Caso os milhões de arquivos que você deseja transferir sejam arquivos de texto simples descompactados, eu daria uma chance à compactação SCP. Eles são arquivos binários ou já arquivos compactados, eu não usaria compressão SCP.

    
por 06.09.2011 / 09:42
0

Ao transferir um grande número de arquivos, eu consideraria usar tar ou alguma outra ferramenta de arquivamento para criar um arquivo grande (que você também poderia compactar) no lado do UNIX, e então transferir esse arquivo maior dos muitos arquivos menores.

Não estou familiarizado o suficiente com o Windows para saber qual software de arquivamento está disponível ( zip ?).

    
por 07.09.2011 / 13:22