Содержимое каталога не полностью скопировано командой scp

Содержимое каталога не полностью скопировано командой scp

Я использую 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 изсовоквместо этого, и он работает без проблем.

Связанный контент