Лучший способ передачи файлов по локальной сети между двумя компьютерами Linux

Я хочу передать файлы (папку музыки) между двумя компьютерами Linux. После поиска лучшего способа сделать это, я видел, что есть lots способов сделать это. Я знаю, что об этом просили много,везде и все время. Основная проблема заключается в том, что в последнее время нет четкого консенсуса в отношении одного наилучшего способа выполнения этой задачи в 2011 году для начинающих Linux (даже в зависимости от некоторых параметров).

Так, в дух веб-сайтов Stack Exchange, я хочу, чтобы это не было связано с моей конкретной ситуацией, но больше руководства для других, а также о том, как передавать файлы между двумя компьютерами Linux по локальной сети. Я думаю, что wiki будет полезна для многих.

вот что я нашел так far:

  • ssh
  • sshfs
  • scp
  • sftp
  • nfs
  • samba
  • дателя

Что самое легкое? Самый гибкий? Простой? Лучшее решение? Каковы плюсы и минусы каждого? Есть ли другие (лучшие) варианты? Каковы параметры при выборе наилучшего метода (решение может зависеть от количества файлов, размера файла, простоты и гибкости) ...)?

15
задан slhck
07.11.2022 17:00 Количество просмотров материала 3306
Распечатать страницу

9 ответов

в среде Linux, как для безопасности, так и для простоты использования, ssh является лучшим способом. SSH, SSHFS, SCP и SFTP, как вы перечисляете, - это просто разные службы, построенные поверх протокола SSH. SCP очень прост в использовании, он работает так же, как CP, но вы можете указать имена пользователей и компьютеров в пути. Таким образом, мы могли бы сделать CP, как cp ~/music/ ~/newmusic/, но мы могли бы так же легко сделать scp ~/music/ user@host:~/newmusic отправить его к компьютеру хост. Вот и все - нам не нужно ничего настраивать. Вам будет предложено ввести учетную запись пароль на другой машине, если у вас нет сертификата или какой-либо другой настройки аутентификации (scp разделяет эти настройки с ssh, конечно).

SFTP-это инструмент, который позволяет легко выполнять множество операций в удаленной файловой системе - он работает так же, как FTP, но он работает через SSH, поэтому он безопасен и требует только SSH-сервер. man sftp расскажет вам все о том, как использовать его. Я не использую SFTP только для перемещения папки между двумя машинами, это более полезно, когда у вас много операции, которые нужно сделать, например, если вы переупорядочиваете файлы на другом компьютере.

SSHFS просто расширяет SFTP на файловую систему: он позволяет монтировать виртуальный хост в вашу файловую систему, поэтому сетевые вещи происходят полностью прозрачно. SSHFS для полупостоянных установок, а не просто один раз передать файл. Требуется еще немного усилий, чтобы настроить, о котором вы можете прочитать на сайт проекта.

Если вам нужно работать в среде смешанной ОС, Samba станет вашим следующим лучшим выбором. Windows и OS X поддерживают Samba полностью автоматически, и Linux также поддерживает, хотя иногда его трудно использовать.

59
отвечен jcrawfordor 2022-11-09 00:48

мой личный фаворит для случаев, когда безопасность не имеет значения составляет netcat + tar:

отправить папку, компакт-диск внутри каталога, содержимое которого вы хотите отправить на компьютер посылает и делать:

tar -cz . | nc -q 10 -l -p 45454

на компьютере, получающем содержимое, компакт-диск, где вы хотите, чтобы содержимое появилось и сделать:

nc -w 10 $REMOTE_HOST 45454 | tar -xz

заменить $REMOTE_HOST С ip / hostname компьютера делая отправка. Вы также можете использовать другой порт вместо 45454.

что на самом деле происходит здесь, так это то, что "принимающий" компьютер подключается к отправляющему компьютеру через порт 45454 и получает содержимое каталога tar'D и gzip'D, и передает его непосредственно в tar (и gzip), чтобы извлечь его в текущий каталог.

пример (использование localhost в качестве удаленного хоста)

компьютер 1

caspar@jumpy:~/nctest/a/mydir$ ls
file_a.txt  file_b.log
caspar@jumpy:~/nctest/a/mydir$ tar -cz . | nc -q 10 -l -p 45454

компьютер 2

caspar@jumpy:~/nctest/b$ ls
caspar@jumpy:~/nctest/b$ nc -w 10 localhost 45454 | tar -xz
caspar@jumpy:~/nctest/b$ ls
file_a.txt  file_b.log
55
отвечен Caspar 2022-11-09 03:05

для однократных ходов рекомендуется scp.

но если вы обнаружите, что этот каталог может работать, и вам нужно переместить его много раз, чтобы сохранить другую позицию обновляется, то вы можете использовать rsync (с ssh).

#!/bin/bash

user="nisse"
host="192.168.0.33"

echo "Sync: /home/media/music/"
rsync --archive --delete -v --progress -e "ssh -l $user " /home/media/music/ $host:/home/media/music/

это переместит каталог с именем"/home/media/ music / " из локального компьютер к ПК называется 192.168.0.33, используя пользователя "nisse". И удалите все, что не существует на локальном компьютере.

19
отвечен Johan 2022-11-09 05:22

самый быстрый, вероятно,netcat (как Каспар описал).

мне нравится сочетание tar & ssh, которое безопасно и все еще быстро:

источник

tar -cf - . | ( ssh user@target && cd /target/path && tar -xf - )

делая это как root, он сохраняет права доступа к файлам. Или используйте -p С обеих сторон. Также -S может быть рассмотрено, если у вас разреженные файлы.

можно уменьшить затраты на шифрование ssh если вы используете arcfour как шифр, который работает с openSSH:

tar -cpSf - . | ( ssh -c arcfour user@targethost && cd /target/path && tar -xpSf - )

обновить удаленный путь, rsync идеально подходит:

rsync -av --sparse --delete -e "ssh -c arcfour" . root@targethost:/target/path
7
отвечен Tim Haegele 2022-11-09 07:39

Я бы рекомендовал вам попробовать альтернативы, а не идти прямо с SSH для перемещения файлов внутри вашей собственной локальной сети, поскольку накладные расходы огромны. Я бы пошел с решением Каспара, если это по какой-то причине не сработает для вас:

источник:

$ python3 -m http.server {PICK_YOUR_PORT}

назначения:

$ wget -r {ip / hostname}:{port}/{File / Directory}

это будет не только легче, чем с помощью SSH, но гораздо быстрее со скоростью в диапазоне 45~65 МБ на стандартном CAT6 UTP.

Если вы действительно хотите выжать большинство из соединения попробуйте заменить wget С lftp и с помощью pget -n20 и mirror -r команды.

6
отвечен cig0 2022-11-09 09:56

Если это абсолютно необходимо сделать по локальной сети, я бы использовал rsync, как он будет забрать, где он остановился, если он будет прерван. У него также есть несколько других трюков для минимизации объема передаваемых данных, хотя я сомневаюсь, что многие/любые из них будут иметь отношение к случаю копирования музыкальной библиотеки в девственное место. Если вас беспокоит безопасность, просто установите RSYNC_RSH=ssh сначала данные будут туннелированы по ssh.

Если бы я на самом деле это делал, я, вероятно, не стал бы использовать локальную сеть вообще. Я копировал файлы на жесткий диск USB, а затем выключал его. По моему опыту, это может быть на несколько порядков быстрее, чем по локальной сети, несмотря на то, что приходится копировать файлы дважды - USB 2.0 рассчитан на 480 Мбит / с, что быстрее, чем что-либо, кроме gigabit ethernet, плюс он менее чувствителен к условиям, которые ухудшат производительность локальной сети. Он также полностью независим от ос, Если вы используете файловую систему, которую могут использовать все вовлеченные машины handle-я бы рекомендовал VFAT / FAT32, так как это довольно универсально.

3
отвечен Dave Sherohman 2022-11-09 12:13

Я бы предложил rsync, поскольку он будет копировать файлы постепенно. Можно настроить копирование только измененных или новых файлов только после выполнения первоначального обновления. При желании можно использовать ssh в качестве транспортного уровня.

2
отвечен Sardathrion 2022-11-09 14:30

Я использую унисон, который является удивительным синхронизации файлов по многим различным протоколам. Вы можете настроить его на использование scp,rcp,ftp или даже локально в файловой системе между двумя папками. Я использую его для синхронизации моей музыкальной библиотеки, так как он может передавать несколько файлов одновременно по сети и действительно настраивается в своей конфигурации. Я сохраняю свою музыкальную коллекцию резервной копией и синхронизирую более 2-3 компьютеров. Он будет копировать только измененные файлы, и делает это, сохраняя индексируйте на обоих концах передачи, чтобы быть в состоянии сказать, когда клиент изменил файл или когда файл сервера изменился.

ваш пробег может варьироваться, но это, конечно, намного лучше, чем scping всю свою музыкальную коллекцию каждый раз, когда вы добавляете новую песню:)

1
отвечен Naftuli Kay 2022-11-09 16:47

я последовал за процесс SSH для беспарольного входа первого http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

для скриптов и текстовых файлов следующие работы для меня просто отлично

для передачи данных с локального хоста на удаленный хост. cat localfile | ssh <user>@<ip> "cat > <path>/<remotefile>"

для передачи данных с удаленного компьютера на локальном хосте. ssh <user>@<ip> "cat > <path>/<remotefile>" | cat > localfile

это работает для меня, чтобы передавать файлы на встроенных системах, которые не имеют клиента ssh или scp встроенный.

нет ssh только для scp.

0
отвечен enthusiasticgeek 2022-11-09 19:04

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх