วิธีที่ง่ายที่สุดในการส่งไฟล์ผ่านเครือข่าย


14

วิธีที่ง่ายและหลากหลายที่สุดในการส่งไฟล์ผ่านเครือข่ายไปยังคอมพิวเตอร์เครื่องอื่นคืออะไร? โดยที่ฉันหมายถึงคอมพิวเตอร์ที่คนอื่นใช้อยู่ในขณะนี้ ฉันไม่คิดว่า SSH จะทำงานหากคอมพิวเตอร์เปิดใช้งานเซสชันอยู่

จนถึงตอนนี้ฉันใช้netcatซึ่งใช้งานได้ดี แต่มีวิธีอื่นที่ง่ายในการทำเช่นนี้? ปัญหาหนึ่งที่ฉันมีnetcatคือผู้รับต้องทราบว่าไฟล์ลงท้ายและต้องมีชื่อสำหรับสตรีม


1
หากคุณต้องการใช้ต่อไปnetcatคุณสามารถส่งtarไฟล์เก็บถาวรและแตกไฟล์ได้ทันที ซึ่งจะช่วยแก้ปัญหาชื่อไฟล์และมีความยืดหยุ่นมากกว่า แต่ในที่สุดฉันเดาscpหรือrsyncเป็นตัวเลือกที่ง่ายกว่า
Marco

วิธีการส่งน้ำมันดินและแยกมันบนแมลงวันทำงานอย่างไร
TomTom

1
ฉันคิดว่าจะอยู่netcat hostname | tar -xในไดเรกทอรีที่คุณต้องการวางไฟล์
Dmitry Grigoryev

คำตอบ:


21

คุณกำลังซับซ้อนชีวิตของคุณโดยไม่จำเป็น scpใช้

การถ่ายโอนไฟล์myfileจากไดเรกทอรีท้องถิ่นของคุณไปยังไดเรกทอรี/ foo / บาร์บนเครื่องotherhostเป็นผู้ใช้ผู้ใช้scp myfile user@otherhost:/foo/barที่นี่เป็นไวยากรณ์:

แก้ไข: มันเป็นมูลค่า noting ว่าการโอนผ่าน scp / SSH ถูกเข้ารหัสในขณะที่โอนผ่าน netcat หรือ HTTP ไม่ได้ ดังนั้นหากคุณถ่ายโอนไฟล์ที่มีความละเอียดอ่อนควรใช้ไฟล์เก่า


ฉันไม่ต้องการรหัสผ่านสำหรับscpบัญชีผู้ใช้หรือไม่
TomTom

ใช่แน่นอน user@otherhostคุณต้องใช้รหัสผ่านสำหรับบัญชี
dr01

2
ไม่คุณไม่จำเป็นต้องใช้รหัสผ่านหากคุณใช้การพิสูจน์ตัวตนด้วยรหัสสาธารณะ
YoMismo

9
ตกลงถ้าคุณต้องการที่จะจู้จี้จุกจิกให้รัฐที่คุณมีการตรวจสอบuser@otherhostเป็น
dr01

1
นอกจากนี้เพื่อให้เข้าใจง่ายหากชื่อผู้ใช้ของคุณเหมือนกันในทั้งสองเครื่องคุณสามารถยกเว้นชื่อผู้ใช้ มันจะยังคงถามรหัสผ่านเมื่อมีการใช้งาน
Sildoreth

10

คุณสามารถลอง

python -m SimpleHTTPServer 8180

มันจะให้บริการไฟล์ในไดเรกทอรีที่จะดำเนินการผ่าน HTTP คุณสามารถเข้าถึงได้ผ่านทางเบราว์เซอร์


หรือใช้ darkhttpd เมื่อไม่พอใจกับประสิทธิภาพ
TNW

1
สำหรับงูหลามที่ python3 -m http.server <port>3:
dotancohen

ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกนี้: askubuntu.com/a/95607/42073
Erel Segal-Halevi

ขอบคุณ! เหมาะสำหรับนำไฟล์บางไฟล์เข้าสู่ระบบทดสอบ Windows
QwertyChouskie

9

หากคุณมีความสุขกับ netcatคุณสามารถหลีกเลี่ยงปัญหาชื่อไฟล์โดย tarintruducing นอกจากนี้ยังลดความยุ่งยากในการส่งไฟล์หลายไฟล์ในครั้งเดียวเช่นเดียวกับการส่งไดเรกทอรี

ด้านการใช้งาน:

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

และในด้านที่ได้รับ:

nc -l <port> | tar x

วิธีการแก้ปัญหาอีกก็จะไปใช้หรือrsyncscp


ฉันมักจะเพิ่ม -q2 ไปยังการส่งnetcatด้วยเพื่อปิดการเชื่อมต่อที่ส่วนท้ายของสตรีม
Simon Richter

ฉันไม่เข้าใจว่าทำไมจึงต้องมีสิ่งนี้ มันจะปิดโดยอัตโนมัติโดยไม่มี-qตัวเลือก
Marco

ขึ้นอยู่กับการใช้งาน netcat ที่คุณใช้ มีการนำไปใช้งานที่ปิดทิศทางเดียวของกระแสข้อมูล TCP เมื่อ stdin ปิดเท่านั้นเนื่องจากทิศทางอื่นอาจยังคงทำงานอยู่
Simon Richter

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

หากโฮสต์ทั้งสองอยู่ใน LAN เดียวกันคุณสามารถใช้ woosได้

มันใช้งานง่ายสุดขีด

หากผู้ส่งและผู้รับอยู่ในอินเทอร์เน็ตและคุณต้องโอนไฟล์ขนาดใหญ่คุณควรติดตั้ง F * EX: http://fex.belwue.de/index.html


1
scp พื้นฐานนั้นง่ายมากและเป็นเครื่องมือที่มีการกระจายความน่าเชื่อถือและใช้งานโดยผู้คนนับล้านซึ่งแตกต่างจากเครื่องมือทำที่บ้านซึ่งดูเหมือนจะได้รับการส่งเสริมโดยผู้เขียน
Jack Wasey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.