ในสภาพแวดล้อม Linux แบบหลายเซิร์ฟเวอร์ งานจำนวนมากเกี่ยวข้องกับการย้ายไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไปจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง ขึ้นอยู่กับจำนวนไฟล์ที่คุณต้องการย้าย มีหลายคำสั่งที่อาจช่วยคุณได้….
สมมติว่าสำหรับการสนทนาเหล่านี้ว่าเซิร์ฟเวอร์ของเราคือ Alice และ Madhat และผู้ใช้ของเราใน Alice คือ Rabbit และผู้ใช้ใน madhat คือ Fieldmouse
ขั้นตอน
ขั้นตอนที่ 1 สำหรับไฟล์เดียว ให้ลองใช้คำสั่ง "scp"
คุณสามารถใช้คำสั่งนี้เป็นคำสั่ง "push" หรือ "pull" แต่มาเริ่มกันที่การพุชไฟล์ไปยังเซิร์ฟเวอร์อื่น ขณะที่อยู่บนอลิซ ให้ใช้คำสั่ง "scp myfile fieldmouse@madhat:thatfile" การดำเนินการนี้จะคัดลอกไฟล์ไปยังระบบอื่น ลงในรหัสผู้ใช้ fieldmouse ด้วยชื่อ "thatfile" หากคุณเข้าสู่ระบบในระบบอื่น คุณสามารถดึงไฟล์ได้อย่างง่ายดายด้วยคำสั่ง "scp rabbit@alice:myfile thatfile" และได้ผลลัพธ์เช่นเดียวกัน
ขั้นตอนที่ 2 ในการคัดลอกไดเร็กทอรีทั้งหมด เราสามารถเปิดคำสั่ง "scp" ได้อีกครั้ง
คราวนี้เราจะเพิ่มสวิตช์ -r เพื่อให้สำเนาทำงาน "แบบเรียกซ้ำ" "scp -r mydir fieldmouse@madhat:" จะคัดลอกไดเร็กทอรีทั้งหมด "mydir" ไปยังระบบอื่น รวมถึงเนื้อหาทั้งหมดและไดเร็กทอรีเพิ่มเติม ไดเร็กทอรีใน madhat จะยังตั้งชื่อ mydir
ขั้นตอนที่ 3 จะเกิดอะไรขึ้นถ้าคุณมี "ความยุ่งเหยิง" ของไฟล์และไดเร็กทอรีที่จะคัดลอก
คุณสามารถใช้คำสั่ง "tar" เพื่อสร้างไฟล์เดียว จากนั้นคัดลอกไฟล์ดังกล่าวตามด้านบน จากนั้นใช้ tar เพื่อขยายไฟล์บนเซิร์ฟเวอร์อื่น… แต่นั่นก็ดูเหมือน… มันต้องมีวิธีทำในขั้นตอนเดียวใช่ไหม? แน่นอน! ใส่ท่อของเปลือกหอยที่คุณชื่นชอบ เรายังคงสามารถใช้ tar เพื่อบรรจุไฟล์ที่เราต้องการ จากนั้นใช้ ssh เพื่อนำไปยังระบบอื่น (ซึ่งเป็นสิ่งที่ scp ใช้อยู่ใต้หน้าปก) และ tar ที่อีกด้านหนึ่งเพื่อขยายไฟล์กลับออกไป แต่ทำไมต้องเสียเวลาและพื้นที่ในการสร้างไฟล์ tar จริง ในเมื่อเราสามารถสร้างไพพ์ที่ครอบคลุมทั้งสองระบบและถ่ายโอนข้อมูล tar ผ่านมันได้ โดยใช้ไดเร็กทอรีเดียวกันกับในตัวอย่างก่อนหน้านี้ ให้ลองใช้ "tar -cf - mydir/ * | ssh fieldmouse@madhat 'tar -xf -'"
เคล็ดลับ
- แน่นอนว่ามีวิธีอื่นในการทำเช่นนี้เช่นกัน Linux เต็มไปด้วยเครื่องมือ ไมล์สะสมของคุณอาจแตกต่างกันไป
- คุณควรแทนที่ชื่อผู้ใช้/ชื่อโฮสต์/ชื่อไฟล์/ชื่อไดเร็กทอรีตามการกำหนดค่าเครือข่ายและสภาพแวดล้อมของคุณในขณะที่ใช้คำสั่งข้างต้น คำสั่งที่แสดงด้านบนเป็นเพียงตัวอย่างการดำเนินการคำสั่งสำหรับการคัดลอกไฟล์บนเซิร์ฟเวอร์