การให้งาน rsync เสร็จสมบูรณ์หลังจากปิดการเชื่อมต่อ SSH


13

rsyncฉันกำลังถ่ายโอนเป็นจำนวนมากของไฟล์จากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกที่ใช้ ฉันกำลังทำสิ่งนี้โดย SSHing ในคอมพิวเตอร์ต้นทางและดำเนินการคำสั่งเช่นนี้:

sudo rsync ssh --rsync-path="sudo rsync" source_dir user@host.com:dest_dir.

แม้ว่าฉันnohupจะเพิ่มก่อนคำสั่งนี้เมื่อใดก็ตามที่ฉันปิดหน้าต่างเทอร์มินัลที่ฉัน SSHed การเชื่อมต่อปิด

ฉันจะมีมันได้อย่างไรเพื่อให้การถ่ายโอนไฟล์ของฉันยังคงดำเนินต่อไปเมื่อฉันปิดการเชื่อมต่อ SSH ของฉัน

คำตอบ:


16

สาเหตุที่nohupไม่ช่วยคุณเป็นเพราะโปรแกรมทำงานกับไฟล์ IO มาตรฐาน

นี่คือ 'ข้อความที่ตัดตอนมาจากหน้า Wikiสำหรับ nohup:

หมายเหตุ - โดยทั่วไปแล้วงานที่ไม่มีพื้นหลัง Nohupping จะถูกใช้เพื่อหลีกเลี่ยงการยกเลิกเมื่อออกจากเซสชัน SSH ระยะไกล ปัญหาอื่นที่มักเกิดขึ้นในสถานการณ์นี้คือ ssh ปฏิเสธที่จะออกจากระบบ ("แฮงค์") เนื่องจากมันปฏิเสธที่จะสูญเสียข้อมูลใด ๆ จาก / ไปยังงานพื้นหลัง ปัญหานี้สามารถแก้ไขได้ด้วยการเปลี่ยนเส้นทางสตรีม I / O ทั้งสาม:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &นอกจากนี้โปรดทราบว่าการปิดเซสชัน SSH ไม่ได้ส่งสัญญาณ HUP ไปยังกระบวนการที่เกี่ยวข้องเสมอ สิ่งนี้ขึ้นอยู่กับว่ามีการจัดสรรสถานีหลอกหรือไม่

คุณสามารถใช้screenสำหรับการที่

เพียงสร้างเซสชันของหน้าจอด้วย: screen -S rsync จากนั้นคุณแยกหน้าจอด้วยCTRL+A d

และคุณสามารถตัดการเชื่อมต่อจากSSH


4
ฉันต้องการเพิ่มเมื่อทำงานที่จะขัดจังหวะเช่นโดยการเชื่อมต่อที่หายไปเป็นปัญหาแล้วเรียกใช้ในเซสชั่นหน้าจอ หน้าจอถูกออกแบบมาเพื่อป้องกันการสูญเสียการเชื่อมต่อโดยไม่ตั้งใจ คุณสามารถล็อกอินจากระยะไกลเริ่มต้นที่หน้าจอเริ่มงานของคุณและหากคุณขาดการเชื่อมต่อคุณสามารถเชื่อมต่อกับอินสแตนซ์ของหน้าจอที่ทำงานอยู่ หน้าจอมีฟังก์ชั่นการใช้งานที่มีประโยชน์อื่น ๆ - จับภาพเซสชันไปยังไฟล์บันทึกมี "หน้าจอ" หลายรายการในเซสชันเดียว (บันทึกค่าใช้จ่ายเครือข่าย) และผู้ชมหลายคน (สไตล์ห้องเรียน) ด้วยมูลค่าการกล่าวขวัญว่า tmux เป็นทางเลือกที่หน้าจอ
Johan

6

คำสั่งหน้าจอนั้นใช้ได้ แต่ไม่ได้ผลสำหรับความต้องการของฉัน

สิ่งนี้ทำงานได้ดีกว่ามาก:

nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &

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