Як витягнути файл із сервера за допомогою scp?


31

Я на машині A і хочу витягнути файл з машини B.

A$ scp <myuserid>@hostB:<path of file in B> .

там сказано, що:

scp: <path of file in B>: No such file or directory

Але на машині B цей файл існує на цьому шляху.

Що йде не так?


Це точний формат команди, яку ви виконували? Або було ім'я файлу після ":"?
dtyler

Відповіді:


43

Ви не вказали жодного файлу: ви повинні додати файл (із шляху) після двокрапки:

A$ scp <myuserid>@hostB:/absolutepath/file .

або

A$ scp <myuserid>@hostB:relativepath/file .

для шляху відносно вашого домашнього каталогу.

Якщо ви не вказали іншого користувача (тобто, користувачі на A і B однакові), вам це не потрібно @

A$ scp hostB:/path/file .

2
Я зафіксував форматування у запитанні, але, можливо, ваша відповідь все-таки справедлива. Проблема може виникнути з-за плутанини між абсолютними та відносними (додому) шляхами.
Стефан Гіменез

@ StéphaneGimenez тепер, коли я бачу відредаговану відповідь, яку я розумію. Здавалося дивне питання :-)
Маттео

4
$ scp username@remoteip:remote_location_file /location/where/you/save

Це працює лише при копіюванні файлу. якщо ви хочете скопіювати використання каталогу

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Варіант, який ви можете використовувати на вашу вимогу

-P порт
Вказує порт для підключення до віддаленого хоста. Зауважте, що цей параметр записується з великої літери "P", оскільки -p вже зарезервований для збереження часу та режимів файлу в rcp.

-p
Зберігає час модифікації, час доступу та режими з вихідного файлу.

-r
Рекурсивно копіювати цілі каталоги.

Докладний режим. Викликає scp і ssh для друку налагоджувальних повідомлень про їх хід. Це корисно для налагодження проблем з підключенням, автентифікацією та конфігурацією.


1
ОП просила скопіювати файл, а не каталог.
контрмод

2

використовувати належний scp шлях

scp ssh://user@hostname/tmp/foo.txt .

1

Ви можете вказати або шлях до файлу, який відповідає вашому домашньому каталогу, або абсолютний шлях до файлу. Наприклад, якщо ви foo.txtперебуваєте в каталозі, який називається docsпід вашим домашнім каталогом, і ви bar.txtперебуваєте в /var/tmp, ви можете це зробити

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

Зауважте, що якщо ім'я файлу містить символи, спеціальні для віддаленої оболонки (як правило, пробіли або !"#$&'*;<>?[\]^`{|}~), вам потрібно уникнути їх для віддаленої оболонки на додаток до того, щоб уникнути їх для локальної оболонки. Наприклад, якщо файл викликається foo bar.txtі знаходиться у вашому домашньому каталозі:

scp username@host.example.com:'foo\ bar.txt' .

Якщо у вас виникли труднощі з файлами, що містять розділові знаки, спробуйте використовувати sftpзамість того, scpщоб передати їх. Або скористайтеся ще більш зручним методом, якщо ви можете використовувати FUSE : змонтуйте файлову систему віддаленої машини за допомогою sshfs , а потім використовуйте звичайні команди управління файлами.

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .

1

Можна SCP і в обидві сторони легко, якщо у вас є користувач DMZ та пароль. Ви знаходитесь на локальній машині: від DMZ до локальної машини Linux (тягніть). Значить скопіювати abc.text всередині папки2 у поточну реєстраційну програму PWD.

scp user@111111:folder1/folder2/abc.txt .

Він запитає пароль

це все

Тепер ви хочете, щоб надіслати папку, підпапки та файли з вашої локальної машини в DMZ:

usr @ localmachine: ~ / abc / defs> scp -r папка / usr @ 111111: vkrishna / docker /

знову буде запропоновано пароль

: - це коренева папка віддаленої машини, а vkrishna - це папка там і знову підпапка docker. Місцева папка defs має папку під назвою "папка", яку ми хочемо повністю перенести.

Як / abc / defs / папка

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.