วิธีย้ายไดเรกทอรีจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่น


10

ฉันมีการเข้าถึง SSH ไปยังเซิร์ฟเวอร์ทั้งสองซึ่งหนึ่งในนั้นว่างเปล่า ฉันจะย้ายไดเรกทอรีไซต์จากเซิร์ฟเวอร์เก่าไปยังเซิร์ฟเวอร์ใหม่ผ่านการเชื่อมต่อ SSH ได้อย่างไร

PS: บนเซิร์ฟเวอร์ทั้งสองเป็นยูนิกซ์

คำตอบ:


15

rsyncที่ฉันชอบคือ มันฉลาดพอที่จะคัดลอกเฉพาะสิ่งที่ต้องคัดลอก (เช่นเปลี่ยนแปลงหรือใหม่)

rsync -avz /source/path user@desthost:/destination/path/

หมายเหตุสุดท้าย/ในตอนท้ายเพื่อขอให้ rsync คัดลอกภายในเส้นทางนั้น (ไม่เกิน)
rsyncดูแลการจัดการการเชื่อมต่อ ssh สำหรับคุณ avz(ทั่วไป) ตัวเลือกถามrsyncที่จะใช้เก็บโหมด (tar) เพื่อที่จะคัดลอกซ้ำและให้มากที่สุดเท่าที่เป็นไปได้วันที่และใช้ค่า vตัวเลือกอย่างละเอียดที่จะแสดงให้คุณเห็นสิ่งที่กำลังเกิดขึ้น zตัวเลือกพระทัยซิป (บีบอัด) โอนเพื่อหวังประหยัดเวลาและแบนด์วิดธ์

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

หากคุณต้องการใช้ rsync ผ่าน SSH บนพอร์ตที่ไม่ได้มาตรฐานเช่น 2222 คุณสามารถใช้คำสั่งต่อไปนี้ ( ดูบทความนี้ ):

rsync -avz -e 'ssh -p 2222' /source/path user@desthost:/destination/path/

ฉันคิดว่า rsync เป็นทางออกที่ดีกว่า ssh ด้วยเหตุผลที่ ring0 มอบให้นั่นคือคัดลอกเฉพาะสิ่งที่ต้องคัดลอก ดังนั้นหากคุณจำเป็นต้องทำมากกว่าหนึ่งครั้ง rsync จะทำให้คุณได้เปรียบกว่าตรง scp
Jason Tan

1
rsync เป็นเครื่องมือที่แน่นอน แต่เกี่ยวกับเครื่องหมายสแลช: นี่เป็นสิ่งสำคัญสำหรับแหล่งที่มาไม่ใช่ปลายทาง: rsync -a / src / / dest คัดลอกทุกสิ่งภายใต้ src ในปลายทาง, rsync -a / src / ปลายทางคัดลอก src และทุกอย่างภายใต้ปลายทาง / src / .
ออสการ์


0

ฉันเขียนคำตอบที่ทำงานได้ดีในคำถามอื่น มันใช้ SSH-Agent เพื่อย้ายการถ่ายโอนข้อมูล mysql: วิธีที่เร็วที่สุดในการย้ายฐานข้อมูลหลายไปยังเซิร์ฟเวอร์ใหม่

รวมสิ่งนี้กับคำตอบของ jscott

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