Como fazer o scp copiar arquivos ocultos?

55

Costumo usar o SCP para copiar arquivos, principalmente arquivos relacionados à web. O problema é que sempre que faço isso, não consigo copiar meu comando (por exemplo, .htaccess).

Eu normalmente invoco isso:

scp -rp src/ user@server:dest/

Isso não copia arquivos ocultos. Eu não quero ter que invocar isso novamente (fazendo algo como scp -rp src/.* ... - e isso tem estranhas . e .. implicações de qualquer maneira.

Eu não vi nada na página scp man sobre um "incluir arquivos ocultos".

Como posso conseguir isso?

    
por rascher 07.06.2009 / 20:39

7 respostas

60

Isso deve absolutamente corresponder aos arquivos ocultos. O / no final da fonte diz "todos os arquivos sob este diretório". No entanto, testes e pesquisas confirmam você. Este é um comportamento estúpido.

A " resposta "é acrescentar um ponto ao final da fonte:

scp -rp src/. user@server:dest/

A resposta real é usar o rsync.

    
por 07.06.2009 / 20:51
25

Você pode experimentar o rsync. É mais adequado para este trabalho:

rsync -av src/ user@server:dest/

(E vale a pena ler sua página de manual.)

    
por 07.06.2009 / 20:51
9

Não coloque uma barra depois do diretório de origem. Seu código ficaria assim:

scp -rp src user@server:dest/

Isso criará um diretório 'src' em 'dest' na máquina remota, com todos os arquivos ocultos incluídos. Provavelmente não é exatamente o que você quer, mas copiará os arquivos ocultos em src.

    
por 07.06.2009 / 20:52
3

O seguinte resolverá o problema, isso foi totalmente testado em nosso ambiente de integração contínua

scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/

Espero que ajude

    
por 16.06.2015 / 15:19
1

Para copiar apenas arquivos ocultos, use este comando

scp -rp /path_to_copy_hidden/.[!.]* user@host:/path_to_paste/

O jogo real é a tag /.[!.]* que está se referindo a arquivos que começam com . (oculto)

    
por 06.06.2018 / 07:51
0

Nenhuma das soluções scp acima funcionou para mim. No entanto, descobri que o seguinte trabalhou no cygwin: scp -r directory / * host: diretório O '*' correspondia a todos os arquivos visíveis e ignorou o invisível.

    
por 23.03.2012 / 18:23
0

Se o login com senha estiver desativado na máquina remota, e a única maneira de efetuar login é por meio de chave pública, você poderá usar isto:

$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/

Ele também copia arquivos ocultos.

Observe também que "user1" deve ter as permissões para ler esses arquivos, por exemplo, você não pode copiar pastas ssh de outros usuários com este método.

    
por 07.07.2016 / 12:31