scp “nenhum tal arquivo” quando o arquivo existe?

3

Estou tentando copiar uma pasta do meu computador local para um servidor remoto, mas parece que ela só captura metade dos arquivos da pasta. Aqui está o meu comando scp:

scp read_tree [email protected]:~/Work/gmovie

e esta é a saída que recebo:

.DS_Store                                                    100% 6148     6.0KB/s   00:00    
read_tree/check_syscalls.c: No such file or directory
read_tree/check_syscalls.h: No such file or directory
example.c                                                    100%  204     0.2KB/s   00:00    
Makefile                                                     100%  438     0.4KB/s   00:00    
read_tree.c                                                  100% 9350     9.1KB/s   00:00    
read_tree.h                                                  100% 1176     1.2KB/s   00:00    
read_tree/stringparse.c: No such file or directory
read_tree/stringparse.h: No such file or directory
read_tree/strtonum.c: No such file or directory
zacc.c                                                       100%  885     0.9KB/s   00:00    

Eu também tentei usar o scp diretamente para um arquivo e obtive o mesmo resultado. Alguma idéia de onde eu estou errado?

** Estou trabalhando no terminal no meu mac

** EDIT: ls -al para o diretório read_tree:

total 112
drwxr-xr-x@  13 name  staff   442 Jul 11 10:42 .
drwx------+ 109 name  staff  3706 Jul 11 10:42 ..
-rw-r--r--@   1 name  staff  6148 Jul 11 11:16 .DS_Store
-rw-r--r--@   1 name  staff   438 Jul 11 09:58 Makefile
lrwxr-xr-x@   1 name  staff    23 Jul 11 09:58 check_syscalls.c -> ../src/check_syscalls.c
lrwxr-xr-x@   1 name  staff    23 Jul 11 09:58 check_syscalls.h -> ../src/check_syscalls.h
-rw-r--r--@   1 name  staff   204 Jul 11 09:58 example.c
-rw-r--r--@   1 name  staff  9350 Jul 11 09:58 read_tree.c
-rw-r--r--@   1 name  staff  1176 Jul 11 09:58 read_tree.h
lrwxr-xr-x@   1 name  staff    20 Jul 11 09:58 stringparse.c -> ../src/stringparse.c
lrwxr-xr-x@   1 name  staff    20 Jul 11 09:58 stringparse.h -> ../src/stringparse.h
lrwxr-xr-x@   1 name  staff    17 Jul 11 09:58 strtonum.c -> ../src/strtonum.c
-rw-r--r--@   1 name  staff   885 Jul 11 09:58 zacc.c
    
por Julia 11.07.2016 / 17:33

1 resposta

3

Parece que o scp no Mac não segue links simbólicos, e seus arquivos com links simbólicos são os que causam o problema para você.

Duas das muitas opções possíveis são:
0. Use a opção -r do scp (a manpage diz que segue os links simbólicos). 1. Tarball os arquivos em um pacote, e envie este arquivo único sobre scp.
2. Copie a pasta (desreferenciando links simbólicos) e scp esta nova pasta.

0) Opção recursiva de SCP

Manpage de scp lê:

-r      Recursively copy entire directories.  Note that scp follows symbolic links encountered in the tree traversal.

Portanto, espero que o seguinte funcione:

scp -r read_tree <destination>

(No entanto, eu não testei isso no Mac, mas funciona em sistemas GNU / Linux.)

1) Opção Tarball

Empacote a pasta usando tar -h e envie o arquivo resultante.

tar czhf read_tree.tgz read_tree
scp read_tree.tgz <destination>

Agora, você pode usar ssh no servidor remoto e descompactar os arquivos:

ssh <destination>
cd ~/Work/gmovie
tar xvf read_tree.tgz

2) Copie a pasta de referência dereferência

Faça uma cópia da pasta original, mas certifique-se de que os links simbólicos sejam desreferenciados para copiar os arquivos originais. Isso pode ser alcançado usando cp -L :

cp -rLf read_tree read_tree_nosymlinks

Agora scp a nova pasta:

scp -r read_tree_nosymlinks <destination>
    
por 11.07.2016 / 19:48