ทำการถ่ายโอน scp ซ้ำต่อ (ด้วย rsync?)


14

ฉันถ่ายโอนไฟล์หลายพันไฟล์ในแต่ละ ~ 1MB ผ่าน scp และการเชื่อมต่อของฉันก็ขาดหลังจากไฟล์ 2k แรกหรือมากกว่านั้น ฉันต้องการทราบว่ามีวิธีการเริ่มต้นการถ่ายโอนซ้ำโดยไม่มีการเริ่มต้นใหม่ สิ่งที่ต้องการ

$ scp -r me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/datafiles/ ./
... Continue transf...

ปัญหาคือฉันไม่สามารถแก้ไขไวยากรณ์ให้ถูกต้องได้ถ้าเป็นไปได้ มีใครบ้างไหมที่เปิดไฟหากสามารถทำได้?

PS หากคุณระบุเครื่องหมายทับหลัง "datafiles" ในบรรทัด rsync สิ่งนั้นจะถ่ายโอนไดเรกทอรีหรือเนื้อหาในนั้นหรือไม่? ฉันเห็นความคิดเห็นที่ขัดแย้งกันเมื่อฉัน googled

คำตอบ:


10

หากคุณกำลัง rsyncing จากเครื่องท้องถิ่นไปยังโฮสต์ระยะไกลนี้จะทำงาน:

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

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

อืมฉันssh -i akey.pemต้องการและฉันไม่สามารถให้-iส่วนใดทำงานกับคำสั่งเหล่านี้ได้
isomorphismes

2
--partial --inplace --no-whole-fileถ้าคุณกำลังพยายามที่จะกลับมาเป็นไฟล์ขนาดใหญ่ตัวเลือกนี้อาจจะมีประโยชน์:
Rafael Xavier

@kibitzer - เมื่อมันแสดงไฟล์ให้คุณ (บนรีโมตเซิร์ฟเวอร์) คุณเริ่มต้นการถ่ายโอนอีกครั้งได้อย่างไร? ฉันเพิ่งสร้างไฟล์รายการและแสดงให้ฉันเห็นไฟล์และจำนวนที่ถูกอัปโหลด แต่มันก็แฮงค์โดยไม่มีตัวเลือกให้ดำเนินการต่อหรือส่งออกความคืบหน้า มีการถ่ายโอนเริ่มขึ้นอีกครั้งหรือฉันต้องทำอะไรบางอย่างเพื่อเริ่มต้นมันหรือไม่?
masterninja01

3
-lไม่จำเป็น. มันบอกเป็นนัยโดย-a
กุยโด้

11

บรรทัดต่อไปนี้ควรทำเคล็ดลับสำหรับสิ่งนั้น:

rsync - partial --progress --rsh = ssh -r me@host.com: / datafiles / ./

ฉันไม่เคยใช้สิ่งนี้เพื่อทำซ้ำไดเรกทอรีก่อน แต่เมื่อฉันส่งข้อความตอนนี้มันดูเหมือนจะทำงานได้ตามที่คาดไว้


1
สิ่งนี้ใช้ได้เช่นกันตราบใดที่คุณรวม -r =)
Physicsmichael

การถ่ายโอน rsync ของฉันส่วนใหญ่เป็นประเภท "rsync -ahP สิ่งที่ / user @ host: / ที่ไหนสักแห่ง /" --rsh = ssh นั้นไม่จำเป็นอย่างสมบูรณ์ จากนั้น -P จะลากใน - บางส่วนและ - ความคืบหน้า
killermist

1

คำสั่ง rsync ที่คุณระบุไว้จะใช้งานได้หากคุณเพิ่ม "-r" เท่านั้น แต่คุณน่าจะต้องการ "-a" และ "-v" ด้วย

และเกี่ยวกับเครื่องหมายสแลช me@site.com: / data / เทียบเท่ากับ / data / * กล่าวอีกนัยหนึ่งถ้าคุณเพิ่มสแลชมันจะคัดลอกเนื้อหาทั้งหมด แต่ me@site.com: / data จะเป็นไดเร็กตอรี่เอง [และโดยปกติคือโฟลเดอร์ย่อยของมัน]


1

การผสานคำตอบของ kibitzer และ Tyler ทำให้ดีที่สุดสำหรับฉัน

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(rsyncing วนซ้ำและแสดงความคืบหน้าของแต่ละไฟล์)

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