Rsync hiển thị tiến trình cho từng tệp


21

Tôi đang sử dụng rsync để tải lên / tải xuống một tệp khá lớn (20Gb). Tôi biết về tùy chọn - tiến hành, nhưng những gì nó làm trong trường hợp của tôi chỉ là hiển thị cho tôi kết quả cuối cùng.

Vấn đề của tôi là trong một số kết nối không ổn định - tôi không biết liệu nó vẫn đang tải xuống / tải lên hay đã xảy ra sự cố. Có cách nào để hiển thị thanh tiến trình cho một tệp riêng lẻ không? Một cái gì đó tương tự như những gì wget làm theo mặc định?

Cảm ơn!


4
Tôi đã sử dụng rsync hơn 10 năm và tôi không thể tin rằng mình chưa bao giờ hỏi câu hỏi này.
slm

Câu trả lời:


17

Đây có thể là những gì bạn đang theo đuổi.

% 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/

Sự cố chuyển mạch như sau:

  • -avvz = lưu trữ, dài dòng x 2, nén
  • --times = bảo toàn thời gian sửa đổi
  • --stats = đưa ra một số thống kê chuyển tập tin
  • --checksum = bỏ qua dựa trên tổng kiểm tra, không phải mod-time & size
  • --human-readable = số đầu ra ở định dạng có thể đọc được
  • --acls = bảo toàn ACL (ngụ ý -p)
  • --itemize-thay đổi = xuất bản tóm tắt thay đổi cho tất cả các bản cập nhật
  • --proceed = hiển thị tiến trình trong quá trình chuyển
  • --out-format = '[% t] [% i] (Sửa đổi lần cuối:% M) (byte:% -10l)% -100n'
    • % t = thời gian ngày hiện tại
    • % i = danh sách được chia thành từng mục của những gì đang được cập nhật
    • % M = thời gian sửa đổi lần cuối của tệp
    • % -10l = chiều dài của tệp tính bằng byte (-10 là để căn chỉnh và chính xác)
    • % -100n = tên tệp (dạng ngắn; dấu "/" trên thư mục) (-100 là để căn chỉnh và chính xác)

LƯU Ý: Xem các trang hướng dẫn rsyncrsyncd.confđể biết chi tiết đầy đủ về các công tắc trên.

Lệnh trên tạo ra bản phiên mã sau:

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

Thanh tiến trình trong các phiên bản mới hơn của rsync?

Tôi đã xem qua câu hỏi SF này:

Một trong những câu trả lời được đề cập rằng trong các phiên bản mới hơn rsynchiện có hỗ trợ cho thanh tiến trình. Nó trông như thế này:

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

Thanh tiến trình này vẫn không hiển thị trạng thái của các tệp riêng lẻ trong quá trình chuyển, nhưng nó hiển thị phần trăm chuyển tổng thể có thể hữu ích.


1
Cảm ơn câu trả lời. Nó vẫn không hoàn toàn là những gì tôi đang tìm kiếm. Điều tôi thực sự cần là khi bạn tải xuống một tệp riêng lẻ (giả sử glib-2.0 / glib-object.h) - nó sẽ chỉ hiển thị cho tôi một thanh tiến trình cho tệp này . Hãy tưởng tượng glib-2.0 / glib-object.h là 20Gb. Làm thế nào bạn biết nếu nó vẫn đang tải xuống và còn bao nhiêu thời gian?
Cá hồi


1

Bạn đang sử dụng rsync trong chế độ daemon? Hành vi mặc định của rsync (trên Debian 6) là cách bạn đã yêu cầu. Tuy nhiên, tôi tìm thấy trong trang man cho rsyncd.conf rằng hành vi mặc định trong chế độ daemon là:

chuyển ghi nhật ký
Tham số này cho phép ghi nhật ký trên mỗi tệp tải xuống và tải lên ở định dạng hơi giống với sử dụng bởi trình nền ftp. Trình nền luôn ghi nhật ký chuyển ở cuối, vì vậy nếu việc chuyển bị hủy bỏ, không có đề cập nào được thực hiện trong tệp nhật ký.
Nếu bạn muốn tùy chỉnh các dòng nhật ký, hãy xem tham số "định dạng nhật ký".

Vì vậy, nếu sử dụng rsync trong chế độ daemon, có vẻ như bạn sẽ phải thêm dòng "ghi nhật ký chuyển" vào rsyncd.conf.


Không, tôi không ở chế độ deamon và tôi không thấy thanh tiến trình cho mỗi tệp, chỉ là tóm tắt cho toàn bộ quá trình
Salmon

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.