
Я использую Windows 10, а сервер — Debian 10, и я копируюСтройныйкаталог сборки с моего компьютера на удаленный сервер. Я использую команду для копирования файлов:
scp -r ./build [email protected]:~/directory
Но некоторые файлы (и целые каталоги) постоянно остаются неиспользованными, и мне приходится вручную копировать их.
Удаленный каталог.
Локальный каталог; весь (play)
каталог удаляется.
Я попробовал запустить его с аргументом verbose, но он не сказал мне ничего особенного (я думаю). Почему он это делает, и как я могу это предотвратить?
решение1
Я обычно использую SCP для передачи одного файла за раз. Или только файлов, соответствующих шаблону из определенного каталога. Никогда не использую для копирования полной структуры каталога
Для таких случаев я бы использовал Rsync. Например, вот ваша команда, переведенная в эквивалент Rsync:
rsync -avzh ./build [email protected]:~/directory
Попробуйте. Должно сработать.
решение2
Я думаю, что SCP необходимо, чтобы структура каталогов существовала на удаленном сервере. Он не будет создавать папки.
Вы можете использовать -e
флаг с rsync, чтобы использовать удаленную оболочку для выполнения передачи.
rsync -r -e "ssh -p 222" /home/test/dev [email protected]:/home/remotetest/dev
решение3
У меня только что была та же проблема, и она, скорее всего, была вызвана этой ошибкой:https://github.com/PowerShell/Win32-OpenSSH/issues/1897
SCP терпит неудачу при рекурсивном копировании со структурой каталогов, глубина которой превышает восемь папок. В месте назначения создаются каталоги до 8-го каталога, но не создаются каталоги глубже 8-го каталога. Файлы вообще не копируются.
В моем случае на самом деле большинство файлов были скопированы, но некоторые файлы отсутствовали — не только из каталогов на 8 уровней ниже, но и из каталогов более высоких уровней.
Неисправная версия scp на моем Windows 10 (со всеми обновлениями) была версии 8.1.0.1. Я установил openssh v9.5.0.0p1 изсовоквместо этого, и он работает без проблем.