3

Я пытаюсь скопировать папку с локального компьютера на удаленный сервер, но кажется, что она перехватывает только половину файлов в папке. Вот моя команда scp:

scp read_tree name@server.school.edu:~/Work/gmovie

и это вывод, который я получаю:

.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    

Я также попытался использовать scp напрямую для одного файла, и получил тот же результат. Любые идеи о том, где я иду не так?

** Я работаю в терминале на моем Mac

** РЕДАКТИРОВАТЬ: ls -al для каталога 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

1 ответ1

3

Похоже, что scp на Mac не следует по символическим ссылкам, и ваши файлы с символическими ссылками являются причиной вашей проблемы.

Два из многих возможных вариантов:
0. Используйте опцию -r scp (manpage говорит, что она следует по символическим ссылкам).
1. Скопируйте файлы в один пакет и отправьте этот единственный файл по scp.
2. Скопируйте папку (разыменование символических ссылок) и найдите эту новую папку.

0) опция рекурсивного SCP

Справочная страница scp гласит:

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

Поэтому я ожидаю, что сработает следующее:

scp -r read_tree <destination>

(Однако я не проверял это на Mac, но он работает на системах GNU/Linux.)

1) Вариант тарбола

Упакуйте папку, используя tar -h , и отправьте один полученный файл.

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

Теперь вы можете подключиться по ssh к удаленному серверу и распаковать файлы:

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

2) Скопировать папку, разыменовывающую символические ссылки

Сделайте копию исходной папки, но убедитесь, что для копирования исходных файлов разыменованы символические ссылки. Это может быть достигнуто с помощью cp -L:

cp -rLf read_tree read_tree_nosymlinks

Теперь скопируйте новую папку:

scp -r read_tree_nosymlinks <destination>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .