Rsync แสดงความคืบหน้าสำหรับแต่ละไฟล์


21

ฉันใช้ rsync เพื่ออัปโหลด / ดาวน์โหลดไฟล์ขนาดใหญ่พอสมควร (20Gb) ฉันตระหนักถึงตัวเลือก - ความคืบหน้า แต่สิ่งที่มันทำในกรณีของฉันคือการแสดงผลในตอนท้าย

ปัญหาของฉันคือระหว่างการเชื่อมต่อที่ไม่เสถียร - ฉันไม่รู้ว่ามันยังคงดาวน์โหลด / อัพโหลดหรือมีบางอย่างผิดปกติ มีวิธีแสดงแถบความคืบหน้าสำหรับแต่ละไฟล์หรือไม่? สิ่งที่คล้ายกับสิ่งที่ wget ทำโดยค่าเริ่มต้น

ขอบคุณ!


4
ฉันใช้ rsync มานานกว่า 10 ปีและไม่อยากจะเชื่อเลยว่าฉันไม่เคยถามคำถามนี้
slm

คำตอบ:


17

นี่อาจเป็นสิ่งที่คุณต้องการ

% rsync -avvz --times --stats --checksum --human-readable --acls \
    --itemize-changes --progress \
    --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
    /usr/include/glib-2.0 my-glib-copy/

สวิตช์แบ่งเป็นดังนี้:

  • -avvz = ไฟล์เก็บถาวร, verbose x 2, บีบอัด
  • --times = สงวนเวลาการแก้ไข
  • --stats = ให้สถิติการถ่ายโอนไฟล์
  • --checksum = ข้ามขึ้นอยู่กับการตรวจสอบไม่ mod-time และขนาด
  • -ตัวเลขที่มนุษย์สามารถอ่านได้ = เอาท์พุทในรูปแบบที่มนุษย์อ่านได้
  • --acls = สงวน ACLs (หมายถึง -p)
  • --itemize-changes = output สรุปการเปลี่ยนแปลงสำหรับการอัพเดททั้งหมด
  • --progress = แสดงความคืบหน้าในระหว่างการถ่ายโอน
  • --out-format = '[% t] [% i] (แก้ไขล่าสุด:% M) (ไบต์:% -10l)% -100n'
    • % t = เวลาวันที่ปัจจุบัน
    • % i = รายการแยกรายการของสิ่งที่กำลังปรับปรุง
    • % M = เวลาที่แก้ไขครั้งล่าสุดของไฟล์
    • % -10l = ความยาวของไฟล์เป็นไบต์ (-10 สำหรับการจัดตำแหน่งและความแม่นยำ)
    • % -100n = ชื่อไฟล์ (รูปแบบย่อ; ต่อท้าย "/" บน dir) (-100 สำหรับการจัดตำแหน่งและความแม่นยำ)

หมายเหตุ:ดู man man สำหรับrsyncและrsyncd.confสำหรับรายละเอียดทั้งหมดเกี่ยวกับสวิตช์ข้างต้น

คำสั่งดังกล่าวสร้างสำเนาต่อไปนี้:

sending incremental file list
delta-transmission disabled for local transfer or --whole-file
[2012/12/23 21:34:46] [cd+++++++++] (Last Modified: 2010/12/19-08:13:31) (bytes: 4096      ) glib-2.0/
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 1511      ) glib-2.0/glib-object.h
       1.51K 100%    0.00kB/s    0:00:00
       1.51K 100%    0.00kB/s    0:00:00 (xfer#1, to-check=181/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 2910      ) glib-2.0/glib.h
       2.91K 100%    2.78MB/s    0:00:00
       2.91K 100%    2.78MB/s    0:00:00 (xfer#2, to-check=180/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 3613      ) glib-2.0/gmodule.h
       3.61K 100%    3.45MB/s    0:00:00
       3.61K 100%    3.45MB/s    0:00:00 (xfer#3, to-check=179/183)
...
...
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8431      ) glib-2.0/gobject/gvaluecollector.h
       8.43K 100%  141.96kB/s    0:00:00
       8.43K 100%  141.96kB/s    0:00:00 (xfer#178, to-check=1/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8507      ) glib-2.0/gobject/gvaluetypes.h
       8.51K 100%  143.23kB/s    0:00:00
       8.51K 100%  143.23kB/s    0:00:00 (xfer#179, to-check=0/183)
total: matches=0  hash_hits=0  false_alarms=0 data=1305506

rsync[2996] (sender) heap statistics:
  arena:         540672   (bytes from sbrk)
  ordblks:            3   (chunks not in use)
  smblks:             7
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        942080   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          592
  uordblks:      404784   (bytes used)
  fordblks:      135888   (bytes free)
  keepcost:      134240   (bytes in releasable chunk)

rsync[2999] (server receiver) heap statistics:
  arena:         286720   (bytes from sbrk)
  ordblks:            2   (chunks not in use)
  smblks:             8
  hblks:              3   (chunks from mmap)
  hblkhd:        667648   (bytes from mmap)
  allmem:        954368   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          672
  uordblks:      174480   (bytes used)
  fordblks:      112240   (bytes free)
  keepcost:      102352   (bytes in releasable chunk)

rsync[2998] (server generator) heap statistics:
  arena:         233472   (bytes from sbrk)
  ordblks:            4   (chunks not in use)
  smblks:             6
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        634880   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          448
  uordblks:       83152   (bytes used)
  fordblks:      150320   (bytes free)
  keepcost:      131120   (bytes in releasable chunk)

Number of files: 183
Number of files transferred: 179
Total file size: 1.31M bytes
Total transferred file size: 1.31M bytes
Literal data: 1.31M bytes
Matched data: 0 bytes
File list size: 6.30K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 350.39K
Total bytes received: 3.43K

sent 350.39K bytes  received 3.43K bytes  707.64K bytes/sec
total size is 1.31M  speedup is 3.69

แถบความคืบหน้าใน rsync เวอร์ชั่นใหม่กว่า?

ฉันเจอคำถาม SF นี้:

หนึ่งในคำตอบที่กล่าวถึงในเวอร์ชันที่ใหม่กว่าrsyncนั้นในขณะนี้สนับสนุนแถบความคืบหน้า ดูเหมือนว่านี้:

% ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

แถบความคืบหน้านี้ยังคงไม่แสดงสถานะของแต่ละไฟล์ในการถ่ายโอน แต่จะแสดงเปอร์เซ็นต์ของการถ่ายโอนโดยรวมซึ่งอาจเป็นประโยชน์


1
ขอบคุณสำหรับคำตอบ. มันยังไม่ใช่สิ่งที่ฉันกำลังมองหา สิ่งที่ฉันต้องการจริงๆคือเมื่อคุณดาวน์โหลดไฟล์แต่ละไฟล์ (สมมติว่า glib-2.0 / glib-object.h) - มันจะแสดงแถบความคืบหน้าให้กับไฟล์นี้เท่านั้น ลองนึกภาพ glib-2.0 / glib-object.h กำลัง 20Gb คุณจะรู้ได้อย่างไรว่ามันยังคงดาวน์โหลดอยู่และเหลือเวลาอีกเท่าไร
ปลาแซลมอน


1

คุณกำลังใช้ rsync ในโหมด daemon หรือไม่? พฤติกรรมเริ่มต้นของ rsync (บน Debian 6) เป็นวิธีการที่คุณร้องขอ อย่างไรก็ตามฉันกำลังค้นหาใน man page สำหรับ rsyncd.conf ว่าพฤติกรรมเริ่มต้นในโหมด daemon คือ:


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

ดังนั้นหากใช้ rsync ในโหมด daemon ดูเหมือนว่าคุณจะต้องเพิ่มบรรทัด "การบันทึกการถ่ายโอน" ใน rsyncd.conf


ไม่ฉันไม่ได้อยู่ในโหมด deamon และฉันไม่เห็นแถบความคืบหน้าสำหรับแต่ละไฟล์เป็นเพียงข้อมูลสรุปสำหรับกระบวนการทั้งหมด
Salmon

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