Найпростіший спосіб надсилання файлів по мережі


14

Який найпростіший і універсальний спосіб надсилання файлів по мережі на інші комп'ютери? Під цим я маю на увазі комп'ютери, якими користуються інші люди на даний момент. Я не думаю, що SSH працює, якщо на комп'ютері відкрита активна сесія.

Поки я використовую netcat, що працює добре. Але чи існують інші прості способи зробити це? Одна з проблем, що я маю netcat, полягає в тому, що одержувач повинен знати, що файл закінчується, і повинен придумати ім'я потоку.


1
Якщо ви хочете продовжувати користуватися, netcatви можете надіслати tarархів і витягнути його на льоту. Це вирішить проблему з іменем файлу, і це більш гнучко. Але врешті-решт я здогадуюсь scpчи rsyncпростіший варіант.
— Марко

Як би відправити дьоготь і витягнути його на льоту?
— TomTom

1
Я припускаю, що це буде netcat hostname | tar -xв каталозі, куди ви хочете розмістити файли.
— Дмитро Григор’єв

Відповіді:


21

Ви ускладнюєте своє життя без потреби. Використовуйте scp.

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

EDIT: Варто зазначити, що передача через scp / SSH шифрується, а передача через netcat або HTTP не є. Тож якщо ви передаєте чутливі файли, завжди використовуйте перший.


Мені не потрібен пароль для scp облікового запису користувача?
— TomTom

Так, звісно. Вам потрібен пароль для облікового запису user@otherhost.
— dr01

2
Ні, вам не потрібен пароль, якщо ви використовуєте автентифікацію відкритих ключів
— YoMismo

9
Гаразд, якщо ви хочете бути прискіпливими, давайте заявляємо, що вам належить пройти автентифікацію якuser@otherhost .
— dr01

1
Крім того, для спрощення, якщо ваше ім'я користувача на обох машинах однакове, ви можете виключити ім’я користувача. Однак, він все одно запитає вас про пароль, якщо це можливо.
— Сілдорет

10

Ви також можете спробувати

python -m SimpleHTTPServer 8180

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


Або використовуйте darkhttpd, коли ви не задоволені роботою.
— TNW

1
Для Python 3: python3 -m http.server <port>.
— dotancohen

Дивіться тут для отримання додаткової інформації про цей варіант: askubuntu.com/a/95607/42073
— Segal-Halevi

Спасибі! Ідеально підходить для отримання декількох файлів на тестову систему Windows
— QwertyChouskie,

9

Якщо ви задоволені, netcatможете вирішити проблему з назвою файлу шляхом втручання tar. Це також спрощує надсилання декількох файлів одночасно, а також надсилання каталогів.

З боку надсилання:

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

І на стороні, що приймає:

nc -l <port> | tar x

Іншим рішенням буде використання rsyncабо scp.


Я зазвичай додаю -q2 також до відправки netcat, щоб змусити його відключити з'єднання в кінці потоку.
— Саймон Ріхтер

Я не розумію, чому цього потрібно вимагати. Він вимикається автоматично без -qможливості.
— Марко

Це залежить від того, яку мережеву реалізацію ви використовуєте. Є реалізації, які закривають лише один напрямок потоку 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

Якщо обидва хости знаходяться в одній локальній мережі, ви можете використовувати вуо .

Це надзвичайно просто у використанні.

Якщо відправник та одержувач ВСЕ ВІДНІМАТИ в Інтернеті, і вам потрібно передати ВЕЛИЧІ ФАЙЛИ, вам слід встановити F * EX: http://fex.belwue.de/index.html


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