Самый простой способ отправки файлов по сети

14

Какой самый простой и универсальный способ отправки файлов по сети на другие компьютеры? Под этим я подразумеваю компьютеры, которые в данный момент используют другие люди. Я не думаю, что SSH работает, если на компьютере открыт активный сеанс.

Пока я использую netcat, который работает хорошо. Но есть ли другие простые способы сделать это? Одна проблема, с которой я столкнулся netcat, заключается в том, что получателю необходимо знать окончание файла и придумать имя для потока.

TomTom
источник
1
Если вы хотите продолжать использовать, netcatвы можете отправить tarархив и распаковать его на лету. Это решит проблему с именем файла и станет более гибким. Но, в конце концов, я думаю, scpили rsyncэто более простой вариант.
Марко
Как будет работать отправка и извлечение tar на лету?
TomTom
1
Я предполагаю, что это будет netcat hostname | tar -xв каталоге, куда вы хотите поместить файлы.
Дмитрий Григорьев

Ответы:

21

Ты без необходимости усложняешь свою жизнь. Использование scp.

Чтобы передать файл MYFILE из локального каталога в каталоге / Foo / бар на машине otherhost как пользователь пользователь , вот синтаксис: scp myfile user@otherhost:/foo/bar.

РЕДАКТИРОВАТЬ: Стоит отметить, что передача по scp / SSH зашифрована, а передача по netcat или HTTP нет. Поэтому, если вы передаете конфиденциальные файлы, всегда используйте первый.

dr01
источник
Разве мне не нужен пароль для scpучетной записи пользователя?
TomTom
Да, конечно. Вам нужен пароль для учетной записи user@otherhost.
dr01
2
Нет, вам не нужен пароль, если вы используете аутентификацию с открытым ключом
YoMismo
9
Хорошо, если вы хотите быть разборчивым, давайте заявим, что вы должны аутентифицироваться как user@otherhost.
dr01
1
Также, в качестве упрощения, если ваше имя пользователя одинаково на обеих машинах, вы можете исключить имя пользователя. Тем не менее, он по-прежнему будет запрашивать пароль, когда это применимо.
Сильдорет
10

Вы также можете попробовать

python -m SimpleHTTPServer 8180

Он будет обслуживать файлы в каталоге, в котором он выполняется по HTTP, вы можете получить к нему доступ через браузер.

Anveshak
источник
Или используйте darkhttpd, когда вы недовольны производительностью.
TNW
1
Для Python 3: python3 -m http.server <port>.
dotancohen
Для получения дополнительной информации об этом параметре см. Здесь: askubuntu.com/a/95607/42073
Сегал-Халеви,
Благодарность! Идеально
подходит для
9

Если вы довольны, netcatвы можете обойти проблему имени файла, привлекая tar. Это также упрощает отправку нескольких файлов одновременно, а также отправку каталогов.

На отправляющей стороне используйте:

tar cf - <files> | nc <host> <port>

И на принимающей стороне:

nc -l <port> | tar x

Другое решение будет использовать rsyncили scp.

Marco
источник
Я обычно добавляю -q2 к отправке netcat, чтобы отключить соединение в конце потока.
Саймон Рихтер
Я не понимаю, почему это необходимо. Он отключается автоматически без -qопции.
Марко
Это зависит от того, какую реализацию Netcat вы используете. Существуют реализации, которые закрывают только одно направление потока TCP при закрытии stdin, потому что другое направление все еще может быть активным.
Саймон Рихтер
tar | ssh tarтакже очень хорошо работает в случаях, когда scp падает и rsync недоступен.
Хоббс
2

Конечно, sshработает, если открыт другой сеанс. Вы можете просто сделать

ssh user@host cat /path/to/file.tar  > localfile.tar

Или скопировать в локальный каталог:

scp user@host:/path/to/file.tar .
Тердон
источник
Возможно ли наоборот ssh lubuntu '>newfile.txt' <file.txt?
Heemayl
1
@heemayl Да, вы можете сделать это cat local.file | ssh user@host "cat > remote.file", или ssh user@host "cat > remote.file" < local.file.
Terdon
0

Если оба хоста находятся в одной локальной сети, вы можете использовать woos .

Это чрезвычайно просто в использовании.

Если отправитель и получатель находятся где-либо в Интернете, и вам необходимо передать БОЛЬШИЕ ФАЙЛЫ, вам следует установить F * EX: http://fex.belwue.de/index.html

Framstag
источник
1
Базовый scp также чрезвычайно прост и представляет собой инструмент, который на самом деле распространяется, пользуется доверием и используется миллионами людей, в отличие от этих самодельных инструментов, которые, как представляется, продвигаются их автором.
Джек Уэйси,