สิ่งนี้ทำเหมือนกับคำตอบของ Peter มาก แต่ให้ตัวเลือกแก่ผู้ใช้ว่าต้องการใช้ไฟล์ระยะไกลแบบใดและเขาต้องการบันทึกไว้ที่ไหน (เช่นเดียวกับการดำเนินการ rsync ผ่าน ssh) แทนที่ USER และ HOST ด้วยชื่อผู้ใช้และโฮสต์ของคุณตามลำดับ
#! / bin / ทุบตี
echo -e "โปรดป้อนพา ธ ไฟล์แบบเต็ม (Escape):"
อ่านเส้นทาง -r
echo "เส้นทาง: $ path"
echo -e "ป้อนปลายทาง:"
อ่าน -r dst
echo "ปลายทาง: $ dst"
ในขณะที่ [1]
ทำ
rsync --progress --partial --append -vz -e ssh "USER @ HOST: $ path" $ dst
ถ้า ["$?" = "0"]; แล้วก็
echo "rsync เสร็จสมบูรณ์ตามปกติ"
ทางออก
อื่น
echo "rsync ล้มเหลวกำลังลองใหม่ในอีกสักครู่ ... "
นอน 60
Fi
เสร็จแล้ว
ตัวเลือก rsync ที่ใช้ที่นี่ช่วยให้สถิติความคืบหน้าในระหว่างการถ่ายโอนการบันทึกไฟล์บางส่วนเมื่อเกิดความล้มเหลวที่ไม่คาดคิดและความสามารถในการผนวกเข้ากับไฟล์ที่เสร็จสมบูรณ์บางส่วนเมื่อกลับมาทำงาน ตัวเลือก -v เพิ่ม verbosity ตัวเลือก -z เปิดใช้งานการบีบอัด (ดีสำหรับการเชื่อมต่อที่ช้า แต่ต้องใช้พลังงาน cpu เพิ่มเติมทั้งสองด้าน) และตัวเลือก -e ช่วยให้เราสามารถถ่ายโอนนี้ผ่าน ssh (การเข้ารหัสเป็นสิ่งที่ดีเสมอ)
หมายเหตุ:ใช้สิ่งนี้เฉพาะเมื่อคุณเปิดใช้งานการลงชื่อเข้าใช้กุญแจสาธารณะด้วย ssh ของคุณมิฉะนั้นจะขอรหัสผ่านเมื่อรีสตาร์ท (ฆ่าฟังก์ชันการทำงานทั้งหมดของสคริปต์)
while ./run_script; do echo "Retrying..."; done; echo "Done."
ตรวจสอบให้แน่ใจว่าได้run_script
รับผลตอบแทน0
จากความสำเร็จ