ฉันต้องการถ่ายโอนไฟล์จากเซิร์ฟเวอร์ CentOS หนึ่งไปยังเซิร์ฟเวอร์อื่น จะถ่ายโอนไฟล์ 5MB ประมาณทุกๆ 10 นาที ไม่ต้องการการเข้ารหัส
อะไรคือความง่ายในการถ่ายโอนไฟล์ที่รวดเร็ว?
มีบางอย่างที่ง่ายกว่า ftp หรือไม่?
ขอบคุณ!
ฉันต้องการถ่ายโอนไฟล์จากเซิร์ฟเวอร์ CentOS หนึ่งไปยังเซิร์ฟเวอร์อื่น จะถ่ายโอนไฟล์ 5MB ประมาณทุกๆ 10 นาที ไม่ต้องการการเข้ารหัส
อะไรคือความง่ายในการถ่ายโอนไฟล์ที่รวดเร็ว?
มีบางอย่างที่ง่ายกว่า ftp หรือไม่?
ขอบคุณ!
คำตอบ:
rsync
ฉันจะใช้ rsync ก่อนที่ฉันจะใช้ ftp หรือ tftp
ตัวเลือกเพิ่มเติมและ (จากประสบการณ์ของฉัน) การถ่ายโอนที่เชื่อถือได้มากขึ้น
tar over ssh ก็โอเค แต่ tar over TCP ผ่าน netcat นั้นมีค่าใช้จ่ายต่ำคุณสามารถรับได้! หากนี่คือสิ่งที่ครั้งเดียวให้ยิงนี่:
บนเครื่องรับ:
nc -l -p 8989 | tar x
บนผู้ส่ง:
tar cf - /source-path | nc (receiving host ip address) 8989
หากนี่คือสิ่งที่คุณจะทำเป็นประจำฉันอาจใช้ rsync
คนสองคนพูดถึงน้ำมันดินมากกว่า ssh แต่ไม่ได้พูดว่าจะทำอย่างไร สำหรับเร็กคอร์ดขั้นตอนพื้นฐานคือการรัน:
tar cf - files... | ssh remotehost 'cd /destination && tar xvf -'
หรือถ้าคุณต้องการเริ่มต้นการโอนจากจุดสิ้นสุดการรับ:
ssh remotehost 'cd /source && tar cf - files' | tar xvf -
ข้อดีของการทำแบบนี้กับโซลูชัน netcat ของ Evan ก็คือสิ่งทั้งหมดสามารถเริ่มต้นได้จากคอมพิวเตอร์เครื่องเดียว คุณไม่จำเป็นต้องประสานงานการเรียกใช้ netcat สองครั้ง หากคุณต้องการให้สิ่งนี้ทำงานโดยอัตโนมัติคุณสามารถตั้งค่าคีย์ ssh ที่ให้คุณทำการเชื่อมต่อโดยไม่ต้องใช้ข้อความรหัสผ่านและใช้คีย์นั้นสำหรับการเชื่อมต่อเหล่านี้
ssh มีตัวเลือก -C เพื่อบีบอัดสตรีมข้อมูลหรือคุณสามารถใช้ความสามารถในการบีบอัดในตัวของ GNU tar:
tar zcf - files... | ssh remotehost 'cd /destination && tar xzvf -'
Rsync เป็นอีกตัวเลือกหนึ่ง แต่ชุดที่แข็งแกร่งคือการอัพเดทไฟล์ที่มีอยู่แล้วในตอนท้ายของการรับ ฉันพบว่ามันช้ากว่า scp หรือ tar / ssh เมื่อใช้มันเพื่อถ่ายโอนไฟล์ที่ไม่มีอยู่ในส่วนอื่น ๆ
ฉันจะใช้scp
หรือtar
มากกว่าssh
โดยสุจริต การเข้ารหัสไม่สิ่งที่ช้าลง แต่ความสะดวกในการติดตั้งและใช้ความน่าเชื่อถือและ (จิตใจของหลักสูตร) คุ้นเคยทำให้ฉันยินดีที่จะใช้ตีจนกว่าฉันจริงๆต้องการความเร็วที่
คุณสามารถเพิ่มความเร็วในการถ่ายโอน ssh ด้วยการบอกให้ใช้ตัวเลขที่เร็วกว่าค่าเริ่มต้นเช่นกัน โดยปกติแล้วค่าเริ่มต้นจะเป็นแบบปกติ3des
และคุณสามารถทำได้-c des
เพื่อที่จะได้เร็วขึ้นอย่างเห็นได้ชัดและ-c blowfish
แสดงอย่างรวดเร็วเช่นกันแม้ว่าฉันจะไม่ได้ทดสอบอย่างแน่นอน
(ย้อนกลับไปในสมัยของ SSHv1 คุณสามารถทำได้บ่อยครั้ง-c none
แต่ฉันคิดว่ามีคนตัดสินใจว่านั่นคือ juju ที่แย่)
ถ้าคุณต้องผ่าน scp / ssh การทดลองของฉันแสดงว่าตัวเลขที่เร็วที่สุดที่เปิดใช้งานโดยค่าเริ่มต้นคือ RC4 คุณระบุรหัสผ่าน ' -c arcfour ' ในคำสั่ง ssh / scp ของคุณ:
สำหรับการคัดลอกครั้งแรก:
scp -c arcfour -r foo/ desthost:/destdir
สำหรับการอัปเดต:
rsync -e 'ssh -c arcfour' -r foo/ desthost:/destdir
Rsync เป็นวิธีที่ดีที่จะไปเพราะถ้าคุณพบว่าตัวเองถ่ายโอนไฟล์เดียวกันมากกว่าหนึ่งครั้งมันจะเพิ่มความเร็วในการคัดลอกดังที่แสดงด้วยคำพูดนี้จากหน้าคน
rsync is a program that behaves in much the same way that rcp does, but
has many more options and uses the rsync remote-update protocol to
greatly speed up file transfers when the destination file is being
updated.
The rsync remote-update protocol allows rsync to transfer just the dif-
ferences between two sets of files across the network connection, using
an efficient checksum-search algorithm described in the technical
report that accompanies this package.
FTP นั้นค่อนข้างง่าย แต่วิธีที่ง่ายกว่าคือการสร้างการแชร์ NFS บนเครื่องหนึ่งและเชื่อมต่อกับอีกเครื่อง จากนั้นการคัดลอกไฟล์จะประกอบด้วยการทำ cp จากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่ง
หากคุณต้องการความเร็วคุณสามารถใช้ netcat และ tar มันจะเร็วกว่า ssh, rsync หรือ scp ในเครือข่ายท้องถิ่นที่ไม่ต้องกังวลเรื่องการเข้ารหัส Google "netcat tar"
nc -l -p 7878 | tar -C /target/dir -xzf -
tar -cz /source/dir | nc DestinationServer 7878
เห็นได้ชัดว่าต้องมีการติดตั้ง netcat จริง Google "netcat tar" สำหรับข้อมูลเพิ่มเติม
ฉันเชื่อว่าคุณได้แก้ไขปัญหาของคุณแล้ว แต่ในกรณีที่ ssh ของคุณทำงานบนพอร์ตอื่น (ไม่ใช่พอร์ตมาตรฐาน 22) คุณสามารถใช้สิ่งนี้
rsync -avz --rsh = 'ssh -pXXXXX' / local / dir / root@192.168.1.2: / remote / dir
หมายเหตุ: - แทนที่ XXXXX ด้วยหมายเลขพอร์ตของคุณ - แทนที่ 192.16.1.2 ด้วย IP เซิร์ฟเวอร์ระยะไกลที่ถูกต้อง
https://www.npmjs.org/package/gist-cli
https://github.com/settings/applications#personal-access-tokens
หรืออันนี้:
https://github.com/defunkt/gist
ใช้คำสั่ง gist เพื่ออัพโหลดและดาวน์โหลด