Rsync ผ่าน ssh หรืออะไรอย่างอื่น?


10

ฉันพยายามใช้ rsync บน OSX ไปยัง Linux หรือ Unix ที่ฉันไม่สามารถควบคุมได้มาก ฉันทำอะไรแบบนี้

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

ข้อผิดพลาดที่ส่งคืนคือ:

bash: rsync: ไม่พบคำสั่ง rsync: การเชื่อมต่อปิดโดยไม่คาดคิด (ได้รับ 0 ไบต์แล้ว) [ตัวรับสัญญาณ] ข้อผิดพลาด rsync: ไม่พบคำสั่งระยะไกล (รหัส 127) ที่ /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [ตัวรับ = 2.6.9]

อย่างไรก็ตามหลังจากอ่านเอกสารฉันเริ่มคิดว่าจริง ๆ แล้วฉันต้องติดตั้ง rsync daemon บนรีโมตโฮสต์

  1. ฉันต้องติดตั้งเซิร์ฟเวอร์ rsync บนรีโมตโฮสต์หรือไม่
  2. ทางเลือกฟรี - GUI หรือไม่ GUI - ซึ่งไม่จำเป็นต้องติดตั้งอะไรในพื้นที่ห่างไกล ?

ขอบคุณ!


1
คุณมีปัญหาอะไรกับคำสั่งปัจจุบันของคุณ?
fideli

@fideli ขอโทษที่ลืมไปแล้ว การแก้ไขคำถามตอนนี้
Dan Rosenstark

1
ขอบคุณสำหรับคำถามนี้ แต่คุณช่วยแท็กได้rsyncมั้ย
Andrew Grimm

คำตอบ:


21

คุณต้องการคำสั่ง rsync บนเซิร์ฟเวอร์ แต่คุณไม่จำเป็นต้องเรียกใช้ daemon

รับไบนารี rsync --rsync-path=/home/user/path/to/rsyncที่ทำงานบนเซิร์ฟเวอร์วางไว้ที่ไหนสักแห่งในบ้านของคุณและเพิ่มสถานะนี้ไปยังบรรทัดคำสั่งของคุณ:

หากคุณไม่ต้องการคัดลอก rsync ไปยังเซิร์ฟเวอร์คุณสามารถใช้ scp หรือ sshfs

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

ในกรณีนั้น rsync จะทำงานในพื้นที่ทั้งหมด แต่การเปลี่ยนแปลงจะถูกส่งไปยังเซิร์ฟเวอร์


ฉันชอบโซลูชันนั้นมากโดยเฉพาะอย่างยิ่งเนื่องจากเซิร์ฟเวอร์เป็นแผนโฮสติ้งราคาถูกใน GoDaddy และฉันสงสัยว่าฉันจะสามารถเรียกใช้ rsync บนเซิร์ฟเวอร์ได้ +1 สำหรับตอนนี้!
Dan Rosenstark

เส้นทางที่ง่ายที่สุดในการไปติดตั้ง sshfs บน OSX คืออะไร MacFuse หรือมีอะไรที่ง่ายกว่านี้ไหม?
Dan Rosenstark

MacFuse + (MacFusion หรือ sshfs-static-leopard) ฉันคิดว่า (ฉันไม่ใช่ผู้ใช้ OSX)
Tobu

ใช่ MacFuse ทำเช่นนั้น เพียงว่าหน้าดาวน์โหลดสำหรับไบนารี sshfs จะให้ไบนารีกับส่วนขยาย. gz ดังนั้นคุณต้องเปลี่ยนชื่อแทน gunzip'ing น่ารำคาญ แต่ก็ไม่เป็นไรตอนนี้! ขอบคุณ
Dan Rosenstark

6

คุณต้องมี rsync บนโฮสต์ระยะไกล - ไม่จำเป็นต้องเป็นเซิร์ฟเวอร์ rsync (ซึ่งฉันเชื่อว่าจะไม่จัดการการเชื่อมต่อ ssl อยู่แล้ว) แต่ rsync บนกล่องภายในเครื่องจำเป็นต้องพูดคุยกับ rsync บนกล่องรีโมต คุณกำลังใช้ ssh เพื่อลิงก์ทั้งสอง

สมมติว่า rsync มีอยู่ในกล่องรีโมตไม่ได้อยู่ในพา ธ การค้นหาเริ่มต้นสำหรับ ssh ของคุณที่ล็อกอินในเชลล์ คุณสามารถลองใช้ทั้งนี้ขึ้นอยู่กับความต้องการและการอนุญาตของคุณในกล่องระยะไกล

  • ใช้ตัวเลือก --rsync-path =
  • เปลี่ยน PATH เริ่มต้นสำหรับเชลล์ ssh ระยะไกลของคุณ
  • เพิ่มนามแฝงสำหรับ rsync ในเชลล์ ssh ระยะไกล
  • การเปลี่ยนคำสั่งรีโมตที่ดำเนินการเป็นพา ธ สัมบูรณ์เป็น rsync

หรือสิ่งที่คล้ายกัน หาก rsync เป็นไฟล์เรียกทำงาน (เซิร์ฟเวอร์รอง) ไม่มีอยู่บนรีโมตโฮสต์จะต้องมีการเพิ่ม


สิ่งนี้มีประโยชน์ดังนั้น +1 แต่ฉันสงสัยว่าจะระบุไดเรกทอรีเริ่มต้นสำหรับ rsync ทางฝั่ง Windows ได้อย่างไรถ้าฉันเรียกใช้จาก Mac ไปยังพีซีเช่นนี้: superuser.com/questions/1462861/ …
Ryan

1

มีจุดไม่มากนักที่ใช้ rsync โดยไม่ต้องใช้ rsync daemon บนรีโมตโฮสต์แม้จะมีวิธีการสร้างสรรค์ sshfs ที่เสนอข้างต้น แนวคิดทั้งหมดของประสิทธิภาพใน rsync คือการให้ทั้งสองอินสแตนซ์เปรียบเทียบสำเนาของชุดข้อมูลในเครื่องโดยการคำนวณ checksums ในพื้นที่เปรียบเทียบกับเครือข่ายและส่งข้อมูลจริงสำหรับส่วนต่าง ๆ ของไฟล์เหล่านั้นซึ่งแตกต่างกันจริง

หากคุณใช้ sshfs หรือการติดตั้งเครือข่ายใด ๆ ก็เป็นเพียงการปกปิดความจริงที่ว่ามันมีการคัดลอกชุดข้อมูลทั้งหมดผ่านเครือข่ายจากโฮสต์ระยะไกลเพื่อคำนวณ checksums ในพื้นที่แล้วส่งความแตกต่างด้านบน มันจะเร็วและถูกกว่าในการลบทุกอย่างในเครื่องและ 'scp -r' มาก


3
ไม่ถูกต้องเพราะ rsync ตรวจสอบว่าไฟล์มีการแก้ไขตามขนาดและการประทับเวลาและยังคงมีประสิทธิภาพมากกว่าการสแกนไฟล์ทั้งหมด แต่แท้จริงแล้วกลไกการอัปเดตที่เพิ่มขึ้น rsync ภายในไฟล์นั้นไม่สมเหตุสมผลกับ sshfs
Jaap Eldering

0

ลองSCP เมื่อคุณเข้าถึง ssh แล้วคุณไม่จำเป็นต้องติดตั้งอะไรบนรีโมตโฮสต์ :)

ในการคัดลอกไฟล์จากรีโมตโฮสต์ไปยัง localhost ให้ใช้:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

หรือคัดลอกไฟล์จาก localhost ไปยังรีโมตโฮสต์ด้วย:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 

1
ขอบคุณลี SCP นั้นยอดเยี่ยม แต่มันไม่ "ซิงค์" ใช่มั้ย
Dan Rosenstark

1
มันต้องเป็น "r" ขนาดเล็ก:scp -r
0x4a6f4672
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.