Как скопировать папку с удаленного сервера на мой локальный компьютер с помощью команды scp? Я использую SSH для входа на свой сервер и мне нужно скопировать удаленную папку с именем ‘foo’ в мой локальный каталог ‘/home/user/Desktop’. Какой правильный синтаксис команды scp для выполнения этой передачи папки?
Чтобы скопировать папку с удаленного сервера на локальный компьютер с помощью scp, необходимо использовать флаг -r (recursive). Правильный синтаксис команды для вашего конкретного случая будет: scp -r username@hostname:/path/to/foo /home/user/Desktop. Эта команда рекурсивно скопирует всю папку ‘foo’ и все ее содержимое с удаленного сервера в локальную директорию Desktop.
Содержание
- Базовый синтаксис команды SCP
- Полный пример команды
- Общие параметры SCP
- Устранение распространенных проблем
- Альтернативные методы
Базовый синтаксис команды SCP
Фундаментальный синтаксис для копирования каталога с удаленного сервера на локальный компьютер с помощью scp выглядит следующим образом:
scp -r [user@]hostname:/path/to/remote/directory /path/to/local/directory
Разбор синтаксиса:
scp: Команда безопасного копирования-r: Обязательный флаг для рекурсивного копирования каталогов[user@]hostname: Ваше имя пользователя и имя хоста или IP-адрес удаленного сервера:/path/to/remote/directory: Абсолютный путь к папке, которую вы хотите скопировать на удаленном сервере/path/to/local/directory: Локальная целевая директория, в которую вы хотите сохранить папку
Важно: При копировании с удаленного сервера на локальный, путь к удаленному ресурсу указывается первым, а локальный путь - вторым в структуре команды.
Полный пример команды
Исходя из ваших конкретных требований по копированию папки с именем ‘foo’ в ‘/home/user/Desktop’, вот полная команда, которую вы будете использовать:
scp -r username@hostname:/path/to/foo /home/user/Desktop
Практические примеры
На основе результатов исследования, вот несколько реальных примеров:
-
Базовое копирование папки с удаленного сервера на локальный:
bashscp -r [email protected]:~/folderinremoteuserdir ~/folderinlocaluserdir
-
Использование SSH-ключа для аутентификации:
bashscp -r -i /path/to/local/key [email protected]:/path/to/folder /your/local/target/dir
-
Копирование с указанием конкретного порта:
bashscp -P 2222 -r [email protected]:/path/to/folder /home/user/Desktop
Общие параметры SCP
Команда scp поддерживает несколько полезных параметров, которые могут улучшить ваш опыт передачи файлов:
| Параметр | Описание | Пример использования |
|---|---|---|
-r |
Рекурсивное копирование (необходимо для каталогов) | scp -r user@host:/path/to/dir /local/path |
-p |
Сохранение прав доступа к файлам и временных меток | scp -p -r user@host:/path/to/dir /local/path |
-q |
Тихий режим (без индикатора прогресса) | scp -q -r user@host:/path/to/dir /local/path |
-P |
Указание номера порта (заглавная P) | scp -P 2222 -r user@host:/path/to/dir /local/path |
-i |
Файл идентификации (SSH-ключ) | scp -i ~/.ssh/key -r user@host:/path/to/dir /local/path |
-C |
Сжатие | scp -C -r user@host:/path/to/dir /local/path |
-v |
Подробный режим (для отладки) | scp -v -r user@host:/path/to/dir /local/path |
Сохранение атрибутов файлов
Если вы хотите сохранить метаданные файлов, такие как владелец и даты создания, используйте параметр -p, как указано в документации Eukhost:
scp -p -r username@hostname:/path/to/foo /home/user/Desktop
Использование SSH-ключей
Для более безопасных подключений, особенно в автоматизированных скриптах, укажите ваш SSH-ключ:
scp -r -i ~/.ssh/your_key username@hostname:/path/to/foo /home/user/Desktop
Устранение распространенных проблем
Проблемы с аутентификацией
Если вы столкнулись с ошибкой “Too many authentication failures” (Слишком много неудачных попыток аутентификации), укажите точный SSH-ключ, как упоминается в ответе на Stack Overflow:
scp -r -i /path/to/local/key username@hostname:/path/to/foo /home/user/Desktop
Отказ в доступе
Убедитесь, что:
- Ваш SSH-ключ правильно настроен на удаленном сервере
- У вас есть права на чтение для исходного каталога
- Локальная целевая директория существует и у вас есть права на запись в нее
Символические ссылки
Имейте в виду, что scp следует символическим ссылкам, встречающимся при обходе. Если вы хотите избежать этого, некоторые пользователи предпочитают использовать rsync вместо scp.
Альтернативные методы
Использование символов-шаблонов
Чтобы скопировать все файлы из удаленного каталога сразу, вы можете использовать шаблоны с символами-шаблонами, как упоминается в документации Warp:
scp username@hostname:/path/to/directory/* /home/user/Desktop
Использование rsync
Для более продвинутых функций, таких как возобновление передачи и лучшая работа с большими каталогами, рассмотрите возможность использования rsync:
rsync -avz username@hostname:/path/to/foo /home/user/Desktop
Копирование нескольких каталогов
Вы можете скопировать несколько каталогов, указав их в одной команде:
scp -r username@hostname:/path/to/dir1 username@hostname:/path/to/dir2 /home/user/Desktop
Заключение
Основные моменты при копировании папок с удаленного сервера на локальный с помощью scp:
- Всегда используйте флаг
-rпри копировании каталогов - это включает рекурсивное копирование всей структуры папок - Запомните порядок синтаксиса: путь к удаленному ресурсу сначала, локальный путь - вторым при копировании с удаленного сервера на локальный
- Используйте SSH-ключи для более безопасной и автоматизированной передачи файлов
- Рассмотрите дополнительные параметры, такие как
-pдля сохранения метаданных или-Pдля указания пользовательских портов - Для больших или сложных передач, rsync может быть лучшей альтернативой scp
Полная команда для вашего конкретного случая остается: scp -r username@hostname:/path/to/foo /home/user/Desktop
Источники
- How do I copy a folder from remote to local using scp? - Stack Overflow
- Unix & Linux Stack Exchange - Copying files from remote to local
- Warp - Copying files from remote to local
- StackAbuse - Copying a Directory with SCP
- Howtogeek - Copying directories recursively with scp
- Eukhost - SCP command for directory transfers
- Linuxize - Using SCP command
- Indiana University Knowledge Base - SCP command