Как скопировать файлы от одной машины до другого использования ssh [дубликат]

Я использую Linux (песни) машина, я уже соединился с другим системным использованием ssh. Теперь мой вопрос состоит в том, как я могу скопировать файлы от одной системы до другой системы?

Предположим в моей среде, у меня есть две системы как System A и System B. Я использую System A машина и некоторое другое использование System B машина.

Как я могу скопировать файл с System B кому: System A? И, скопируйте файл с System A кому: System B?

725
16.06.2018, 06:56
4 ответа

Синтаксис:

scp <source> <destination>

Скопировать файл с B кому: A в то время как вошли B:

scp /path/to/file username@a:/path/to/destination

Скопировать файл с B кому: A в то время как вошли A:

scp username@b:/path/to/file /path/to/destination
1053
27.01.2020, 19:27
  • 1
    Для разъяснения Вы обычно не используете scp скопировать файл в или от Вашей локальной машины (Система A), в то время как зарегистрированный к удаленному серверу (Система B) с ssh. scp зарегистрирует Вас в удаленный сервер, скопирует файл, затем зарегистрирует Вас снова в одном процессе, поэтому просто выполнит его от оболочки на Вашей локальной машине. Однако можно использовать scp если Вы - Система, в которую входят, B через SSH и хотите скопировать файлы между Системой B и Системой C. –  Garrett Albright 24.12.2013, 18:40
  • 2
    @DopeGhoti. Да, Вы не можете переместить файлы между двумя удаленными компьютерами. Или источник или место назначения должны быть локальным файлом. Однако, если Вы входите в систему удаленной машины с ssh, можно скопировать файлы между двумя удаленными машинами на командной строке той машины. –  Gee-Bee 08.08.2014, 22:48
  • 3
    Кроме того, важная вещь помнить состоит в том, что Вы можете только scp к папке на целевой машине, к которой у Вас есть полномочия. При попытке скопировать его в место назначения, к которому целевой пользователь не имеет разрешения, сначала копирует файл в корневой каталог или подкаталог пользователя и затем ssh в целевую машину, и sudo перемещают его к конечному месту назначения –  shaveenk 25.04.2015, 23:30
  • 4
    Помнит (рекурсивный)-r, и-p (сохраните системные метаданные): scp - RP <file1> <file2> –  Rutrus 01.07.2015, 10:23
  • 5
    Да, использовать -P указывать порт TCP на удаленном хосте. Это ловит меня каждый раз, потому что ssh использование -p. –  DopeGhoti 28.04.2016, 21:22

В случае, если, если Вам нужен альтернативный подход.

Установите sshfs. при использовании ubuntu/debian:

sudo apt-get install sshfs

или, если Вы используете centos/rhel:

sudo yum install fuse-sshfs

или, в macOS

brew install sshfs

Создайте пустой dir

mkdir /home/user/testdir

"свяжите" или "смонтируйте" эти два каталога

sshfs user@server.com:/remote/dir /home/user/testdir

"удалите связь" с директорами

fusermount -u /home/user/testdir

На BSD и macOS, для размонтирования файловой системы:

umount mountpoint

или

diskutil unmount mountpoint

Поскольку больше видит здесь, linuxjournal.com libfuse/sshfs

114
27.01.2020, 19:27
  • 1
    Вопрос конкретно указывает, что рассматриваемой ОС является CentOS; не Debian-полученный. apt-get Debianism; корректный диспетчер пакетов был бы yum или, для действительно старых разновидностей CentOS, up2date или rpm. –  DopeGhoti 24.12.2013, 23:30
  • 2
    +1, которым ответ для этого вопроса может быть от контекста, но это все еще помогло мне, и насколько я вижу, другие также. –  osirisgothra 23.07.2014, 18:27
  • 3
    Не связанный, но это - xD –  Ramy Al Zuhouri 15.05.2015, 19:55
  • 4
    Если я понимаю правильно, это предоставляет ДОСТУП к удаленным файлам, но не КОПИРУЕТ их? –  ToolmakerSteve 20.04.2016, 05:46
  • 5
    @ToolmakerSteve Вы совершенно правы: это создает поддельный каталог (монтируются), так, чтобы можно было использовать все предпочтительные инструменты, чтобы скопировать или переместить вещи: cp, mv, rm, rsync, unison... scp команда только смогла бы скопировать файлы. –  Yvan 19.10.2016, 08:38

Иногда необходимо стать необычными с tar:

tar -C / -cf - \
  opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \
  --exclude=opt/widget/local.conf | 
  ssh otherhost tar -C / -xvf -
49
27.01.2020, 19:27
  • 1
    ? Это - то, как мы раньше совместно использовали ленточные накопители. :) –  Dan Garthwaite 08.12.2015, 17:01
  • 2
    Можно ли сказать нам, что это делает? Например, я понятия не имею, какой 'крон' имеет отношение к копированию файла! источник –  aliqandil 28.10.2016, 18:00
  • 3
    @aliqandil выбирает/виджет и т.д./виджет etc/cron.d/widget etc/init.d/widget, отдельные файлы, которые будут включены в архив tar. Точка должна была проиллюстрировать, почему иногда необходимо стать необычными. Этот ряд команд передает архив tar потоком по соединению SSH и разархивировал его с другой стороны. Таким образом никакой архив tar никогда не пишется в диск. Я использую это иногда для избирательного подхода к выбору файлов для копирования в одной команде. –  Dan Garthwaite 28.10.2016, 21:51
  • 4
    Ой! Я учил, что первым '/' был исходный путь! (Что это?) Так, чтобы был глупый вопрос!Спасибо. :) –  aliqandil 29.10.2016, 00:01
  • 5
    будет chdir к "/" таким образом, все следующие пути относительно "/". –  Dan Garthwaite 29.10.2016, 17:27

Если Вы хотите сохранить файлы в обеих системах в синхронизации, затем взглянули на rsync программа:

(см. учебное руководство здесь),

22
27.01.2020, 19:27

Теги

Похожие вопросы