Где scp помещал эти файлы?

Я запустил команду scp для загрузки некоторых файлов с SSH-сервера. Вместо использования . чтобы поместить его в текущую папку, я случайно набрал * . Похоже, scp скопировал файлы и поместил их где-нибудь. Моя команда была похожа на это:

 $moshe> scp username@server.com:~/SomeDirectory/SubDir/* * 

Я хотел напечатать что-то более похожее на это:

 $moshe> scp username@server.com:~/SomeDirectory/SubDir/* . 

Где они будут?

Ваша оболочка расширила бы * все файлы в текущем каталоге. scp принимает несколько исходных файлов и единственный путь назначения (то же, что и cp ), поэтому он будет скопировать username@server.com:~/SomeDirectory/Subdir/* и все файлы в текущем каталоге, кроме последнего, в последний. Итак, если список файлов в текущем каталоге не изменился, проверьте, какой каталог указан последним:

 $ ls | tail -1 

Он помещает их в один подкаталог вашего текущего каталога.

Например, если ваш текущий каталог выглядит примерно так:

 [andcoz@...] ~/test> ls -F efrsvw Z/ 

Обратите внимание, что Z – это каталог. Когда вы пишете:

 scp username@server.com:~/SomeDirectory/SubDir/* * 

Расширение оболочки преобразует вашу команду в нечто вроде:

 scp username@server.com:~/SomeDirectory/SubDir/* efrsvw Z 

Таким образом, все ваши файлы с удаленной машины и все файлы локального каталога будут скопированы в каталог Z

Если в текущем каталоге не было файлов¹, то scp последовательно копировал все удаленные файлы в файл с именем * . Другими словами, файл ./* теперь содержит последний удаленный файл в алфавитном порядке. Если какой-либо из удаленных файлов был каталогом, scp отображал сообщение об ошибке, но продолжал копирование.

Если в текущем каталоге был один обычный файл, то scp последовательно копировал все удаленные файлы в один файл.

Если в текущем каталоге было по крайней мере две записи, то что произошло, зависит от типа файла последней записи в алфавитном порядке (последний элемент в списке, если вы запустите ls ).

  • Если это был обычный файл, scp прерывается с ошибкой «Не каталог».
  • Если это был каталог, scp скопировал все удаленные файлы и все файлы в текущем каталоге, за исключением последней записи в указанную директорию.

Я рекомендую монтировать удаленные каталоги с помощью sshfs или использовать rsync -av или rsync -auv (без подстановочных знаков) для копирования файлов. scp может быть подвержен ошибкам.

¹ За исключением файлов, имя которых начинается с . ,