ซิงค์โลคัลไดเร็กทอรีกับรีโมตไดเร็กทอรีใน Linux


14

ฉันมีโฟลเดอร์ที่มีไฟล์อยู่สองสามไฟล์และมีพื้นที่บนเว็บเซิร์ฟเวอร์ ฉันต้องการทำการซิงค์แบบสองทิศทางระหว่างโลคัลโฟลเดอร์และรีโมตหนึ่งใน linux เพียงแค่เวลาแก้ไข ฉันจะทำสิ่งนี้ได้อย่างไร btw ฉันไม่สามารถติดตั้งอะไรบนเซิร์ฟเวอร์สำหรับทุก intents และวัตถุประสงค์มันเป็นเพียงพื้นที่

หมายเหตุ: ฉันได้ตั้งค่าคู่คีย์ rsa ไว้แล้วเพื่อให้สามารถเกิดขึ้นได้อย่างเงียบ ๆ

คำตอบ:


12

เครื่องมือของทางเลือกสำหรับการประสานทิศทางเดียวคือ rsync และเครื่องมือของทางเลือกสำหรับการประสานสองทิศทางคือความพร้อมเพรียงกัน ทั้งสองต้องการให้สามารถใช้งานได้ทั้งสองด้าน หากคุณสามารถสร้างไฟล์ที่เรียกใช้งานบนฝั่งเซิร์ฟเวอร์ให้ปล่อยไบนารีพร้อมเพรียงและทำให้สามารถเรียกใช้งานได้

หากคุณมี Linux, * BSD, Solaris หรือ Mac OS X ในตัวเครื่องคุณอาจใช้ระบบไฟล์FUSEเพื่อทำให้พื้นที่เว็บเซิร์ฟเวอร์ปรากฏเป็นระบบไฟล์ในเครื่อง - sshfsควรทำงานได้เนื่องจากคุณดูเหมือนจะมีการเข้าถึง ssh จากนั้นใช้พร้อมกัน“ ภายใน”

นอกจากนี้โปรดทราบว่าซอฟต์แวร์ควบคุมเวอร์ชันส่วนใหญ่ (CVS / การโค่นล้มรวมถึง VCS แบบกระจาย) มีการซิงโครไนซ์เป็นคุณลักษณะแบบรายทาง (เช็คอินเครื่องหนึ่งและอีกเครื่องหนึ่ง)


4

หากติดตั้งบนเซิร์ฟเวอร์ให้ใช้งานrsyncบิลด์สำหรับงานนั้น ๆ

หากต้องการรับข้อมูลแบบสองทิศทางให้ทำเช่นนี้ (อ้างจากhttp://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

เมื่อต้องการซิงค์ไดเรกทอรีแบบสองทิศทาง /src/fooบนhostAไป/dest/fooบนhostBรวมทั้งทุกไดเรกทอรีย่อยคุณจะเรียกใช้คำสั่งเหล่านี้บน hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

คำสั่งแรกผลักดันให้ไฟล์ทั้งหมดที่ใหม่ในการhostAhostB

คำสั่งที่สองจะดึงไฟล์ทั้งหมดที่ใหม่ในการhostB hostAตัวเลือกที่สำคัญคือ:

เมื่อคัดลอกคุณจะต้องรักษาเวลาการแก้ไขไฟล์ -aทำสิ่งนี้และสิ่งอื่น ๆ ;

หากคุณต้องการรักษาเวลาการปรับเปลี่ยนให้ใช้-tแทน

หากต้องการข้ามไฟล์ใด ๆ ที่ใหม่กว่าบนปลายทาง: -uทำสิ่งนี้


เท่าที่ฉันอ่าน rsync ไม่ได้ทำสองทิศทางและเมื่อฉันพยายามทำให้ฉันมีข้อผิดพลาด "โปรโตคอลรุ่นไม่ตรงกัน - เปลือกของคุณสะอาดหรือไม่"
Andrew Redd

hostanswers.net/linux-hosting/rsync-protocol-version-mismatchอาจช่วยคุณแก้ไขสิ่งที่ไม่ตรงกันของรุ่น สำหรับสิ่งที่มีทิศทางฉันปรับปรุงคำตอบของฉัน
tante

1
Rsync ไม่ได้ปรับให้เข้ากับการซิงโครไนซ์แบบสองทิศทางเลย สำหรับสิ่งหนึ่งมันจะไม่เตือนคุณหากมีความขัดแย้ง ใช้ Unison แทนมันเป็นเครื่องมือที่เหมาะสมสำหรับงาน
Gilles 'หยุดชั่วร้าย'

1
สิ่งนี้จะพังอย่างน่ากลัวหากเซิร์ฟเวอร์ A อยู่ในอนาคตจากเซิร์ฟเวอร์ B ในกรณีของฉันฉันใช้เวลา 13 ชั่วโมงก่อนเซิร์ฟเวอร์ระยะไกล
Tim Post

1

ทุกครั้งที่คุณต้องการซิงค์ระหว่างสองโฟลเดอร์rsyncเป็นตัวเลือกที่ยืดหยุ่นอย่างยิ่ง ปัญหาคือ rsync นั้นไม่รองรับโปรโตคอล ftp วิธีแก้ปัญหาที่ดีสำหรับสิ่งนี้คือcurlFtpFS :

CurlFtpFS เป็นระบบไฟล์สำหรับการเข้าถึงโฮสต์ FTP ตาม FUSE และ libcurl

ด้วย curlFtpFs ค่อนข้างง่ายที่จะรวมโฟลเดอร์ ftp ระยะไกลในระบบไฟล์ของคุณ

นี่เป็นตัวอย่างสั้น ๆ ที่แสดงการใช้งานเครื่องมือทั้งสอง:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

อ่าน manpage สำหรับข้อมูลเพิ่มเติม

หากคุณไม่ต้องการความพยายามในการติดตั้ง curlFtpFS และเพียงแค่ต้องการทำให้บางไฟล์ซิงค์อยู่เสมอมีเครื่องมือ ftp จำนวนมากที่ให้คุณสมบัติการซิงค์ดังกล่าว:

  • FTPSync.pl - สคริปต์ PERL อย่างง่ายเพื่อให้ไดเรกทอรีท้องถิ่นและไดเรกทอรีระยะไกลในการซิงค์
  • weex - ไคลเอนต์ FTP แบบไม่โต้ตอบสำหรับการปรับปรุงหน้าเว็บ
  • filezilla - ไคลเอนต์ GUI FTP พร้อมคุณสมบัติมากมาย
  • ...

1. Rsync ไม่ดีสำหรับการซิงโครไนซ์แบบสองทิศทางใช้ Unison แทน 2. FTP มาจากไหน กล่าวถึงคีย์ RSA ในคำถามค่อนข้างแนะนำ ssh (และ sshfs)
Gilles 'หยุดชั่วร้าย'

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