Обычно, если бы я хотел скопировать файлы с удаленной машины, я бы сделал
scp user@remote.device:/folder/* .
Тем не менее, в этом случае есть так много файлов, которые я получаю ошибку
bash: /usr/bin/scp: Argument list too long
Теперь, решив эту проблему, я могу найти несколько способов создать архив tar на удаленной машине, не вызывая эту ошибку. Однако в этом случае на удаленном компьютере есть только небольшая SD-карта для хранения, поэтому нет места для создания архива.
Итак, что будет нормальным способом передачи файлов в этом случае? Я думаю, это не должно иметь большого значения, но в случае, если это так, моя локальная машина - Mac, а удаленная - Raspberry Pi.
networking
command-line
scp
Nathaniel
источник
источник
ssh user@remote 'cd folder; tar cf - .' | tar xf -
, На GNU tar и, возможно, других,f -
(используйте stdout / stdin соответственно) можно опустить.tar
по умолчанию сохраняет оригинальное времяscp -p
; если хотите обновить, добавьтеm
послеx
,Ответы:
Вы должны использовать
-r
параметрscp
, так:Обратите внимание, что в результате
folder
будет в конечном итоге как подпапка./
источник
-r
флаг тоже. Есть ли у вас понимание того, почему?-r
потому что удаленная подсистема отправляет файлы в ваше локально запущенное приложение scp (процесс инициируется удаленным хостом, а ваш локальный хост просто подтверждает, как он получает), в то время как без-r
Сначала ваш scp создает список файлов, а затем запрашивает для каждого файла удаленный хост, один за другим, создавая значительную задержку в сети.