Erro ao usar o SCP: “não é um arquivo regular”

63

Eu tenho procurado por um tempo e não consigo encontrar a definição de um arquivo regular. Meu caminho é permanente (eu começo em / ) e estou me conectando a

scp root@IP: /path/to/picture.jpg

Resulta em um pedido de senha e, em seguida ...

scp: .: not a regular file
    
por JeffM 23.10.2012 / 06:26

6 respostas

47

Um arquivo normal é um arquivo que não é um diretório ou um tipo mais exótico de arquivos "especiais" como pipes nomeados, dispositivos, tomadas, portas, etc. Links simbólicos também não são arquivos regulares, mas eles se comportam como seus alvos quando um aplicativo está acessando o conteúdo do arquivo.

Você passou root@IP: como a origem da cópia e /path/to/picture.jpg como o destino. A origem é o diretório inicial do usuário root na máquina IP . Isso é útil como um destino, mas não como uma fonte. O que você digitou precisava copiar um diretório em um arquivo; scp não pode copiar um diretório a menos que você solicite uma cópia recursiva com a opção -r (e se recusaria a sobrescrever um arquivo existente com um diretório mesmo com -r , mas sobrescreveria silenciosamente um arquivo regular se a origem era um arquivo regular).

Se /path/to/picture.jpg for o caminho na máquina remota do arquivo que você deseja copiar, será necessário inserir o nome do arquivo na especificação do host. É o cólon : que separa o nome do host do caminho remoto. Você também precisará especificar um destino.

scp root@IP:/path/to/picture.jpg /some/destination

Se você quiser copiar o arquivo local /path/to/picture.jpg para o host remoto, será necessário trocar os argumentos. Os comandos de cópia do Unix colocam a (s) fonte (s) primeiro e o destino por último.

scp /path/to/picture.jpg root@IP:

Se você quiser copiar o arquivo remoto /path/to/picture.jpg para o mesmo local localmente, será necessário repetir o caminho. Você pode fazer com que o seu shell faça o trabalho de repetir para você (menos digitação, menos legibilidade).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg
    
por 24.10.2012 / 02:48
87

Ao copiar um diretório, você deve usar a opção -r :

scp -r root@IP:/path/to/file /path/to/filedestination
    
por 03.10.2013 / 12:00
3
Problema de sintaxe

- remova o espaço em branco entre

root@IP:

e

/path

    
por 23.10.2012 / 06:32
2

scp root@IP:/path/to/file /path/to/filedestination

O comando acima copia um arquivo do servidor remoto para o seu computador. Se você digitar apenas scp root@IP: , ele tentará copiar o diretório inicial do root (usuários do scp home . ).

Então você precisa fornecer o caminho exato para o arquivo

    
por 23.10.2012 / 06:48
2

Você está recebendo esse erro porque está tentando copiar uma pasta e não um arquivo e, portanto, deve copiar seus arquivos recursivamente usando -r option

Use o comando abaixo ao copiar arquivos da máquina remota para a máquina local

scp -r root@RemoteIP:/path/to/file /path/to/filedestination

OR

Ao copiar arquivos da máquina local para a máquina remota

scp -r /path/to/file root@RemoteIP:/path/to/filedestination
    
por 22.03.2017 / 16:51
0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Isso funcionará (pelo menos no meu Mac)

    
por 01.10.2017 / 06:45

Tags