Bagaimana saya bisa melihat bilah kemajuan saat menjalankan rsync?

31

Saya menggunakan Ubuntu 12.04 sebagai repo dan ingin melihat progress bar saat menggunakan rsyncdari baris perintah. Saya mencoba opsi yang disarankan dalam artikel ini ( -P), tetapi saya lebih suka melihat progress bar dan tidak menggunakan Grsync. Saya menggunakan rsync -P source destsaat ini.

Joseph Smith
sumber
Sudahkah Anda membaca ini? stackoverflow.com/questions/238073/…
AB
Saya menghargai respons yang cepat. Saya berharap untuk meneliti ini.
Joseph Smith
Itu adalah awal yang baik tetapi saya perlu tahu bagaimana membuat pembaruan progress bar saat rsync bekerja. Seorang teman mengatakan bahwa saya perlu menerapkan ukuran server dan menerapkan perintah arloji dengan pipa.
Joseph Smith
Ada jawaban :)
AB

Jawaban:

7

Bagaimana dengan ini?

rsync_param="-av"
rsync "$rsync_param" a/ b |\
     pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
  • $rsync_param

    Menghindari input parameter ganda

  • $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)

    Menentukan jumlah langkah yang harus diselesaikan.

  • a/ b

    1. a/ adalah sumbernya
    2. b adalah targetnya
AB
sumber
1
@ JosephSmith Apakah Anda puas dengan jawaban saya? Kemudian beri saya upvote (∧). Jika saya dapat memecahkan masalah Anda, maka alangkah baiknya jika Anda menandai jawaban saya (✓). ;)
AB
Saya menerima ini beberapa hari yang lalu dengan senyum lebar. Saya hanya un dipilih dan menerimanya lagi. Saya pikir saya tidak dapat memilih karena saya tidak memiliki kredit yang cukup. Terima kasih atas bantuannya btw.
Joseph Smith
Adakah ide mengapa saya mendapatkan kesalahan, tidak ada file atau direktori ditemukan? Perintah yang saya jalankan adalah: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / ubuntu / indeks | pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices/ / repo / ubuntu / index | awk 'NF' | wc -l)
Joseph Smith
1
"$rsync_param"nagak aneh; tanda kutip berarti hanya dapat bekerja pada opsi tanpa spasi, dan melampirkan nsampai akhir berarti hanya dapat bekerja dengan opsi pendek. Jauh lebih jelas dan lebih mudah $rsync_param -n, yang menentukan dry-run tanpa bergantung pada format rsync_param, dan dengan tidak mengutipnya, opsi yang panjang juga bisa dimasukkan
Izkata
Bekerja pertama kali, kecuali memperhatikan bahwa itu tidak menampilkan kecepatan transfer
Ciasto piekarz
36

rsync memiliki --infoopsi yang dapat digunakan tidak hanya untuk menampilkan kemajuan saat ini, tetapi juga kecepatan transfer dan waktu yang berlalu:

--info=FLAGS            fine-grained informational verbosity

Penjelasan tentang bagaimana menggunakannya berada di bawah -Popsi di halaman manual:

-P     The -P option is equivalent to --partial --progress.  Its purpose is to
       make it much easier to specify these two options for a long transfer that
       may be interrupted.

       There is also a --info=progress2 option that outputs statistics based on
       the whole transfer, rather than individual files.  Use this flag
       without  out‐putting  a  filename  (e.g. avoid -v or specify --info=name0)
       if you want to see how the transfer is doing without scrolling the screen 
       with  a  lot  of names.   (You  don’t  need  to specify the --progress
       option in order to use --info=progress2.)

Jadi yang berikut ini:

rsync -r --info=progress2 --info=name0 "$src" "$dst"

Hasilnya adalah sebagai berikut dan terus diperbarui:

18,757,542,664 100%   65.70MB/s    0:04:32 (xfr#1389, to-chk=0/1510)

Perhatikan bahwa ketika transfer memulai jumlah potongan, dan karena itu kemajuan saat ini, dapat berubah ketika opsi rekursif digunakan karena lebih banyak file ditemukan untuk sinkronisasi

Jon
sumber
16

Anda dapat menggunakan --progressdan --statsparameter.

rsync -avzh --progress --stats root@server:/path/to/file output_name

root@server's password: 
receiving incremental file list
file
         98.19M  54%    8.99MB/s    0:00:08
buronan
sumber
2
Ini bekerja untuk saya di macOS.
mangga
2

Ini akhirnya berhasil:

rsync "$rsync_param" -a --prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)
Joseph Smith
sumber
1

Jika versi rsyncAnda tidak menerima --info=progress2opsi, Anda dapat menggunakan tqdm:

Untuk memasang:

pip install tqdm

Menggunakan:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit / s]
ostrokach
sumber
0

Ya, lakukan apa yang dikatakan Jon : gunakan --info=progress2opsi. Tetapi, apa yang harus saya lakukan jika versi rsync saya terlalu tua dan tidak mendukung opsi ini? Jawab: perbarui rsync!

Berikut ini cara membuat rsyncdari sumber di Ubuntu

(diuji pada Ubuntu 16.04)

  1. Unduh versi terbaru rsync: https://download.samba.org/pub/rsync/src/ . Contoh: "rsync-3.1.3.tar.gz". Simpan di direktori TANPA RUANG DI SEMUA untuk memastikan itu membangun dengan benar.
  2. Di penjelajah folder Anda, klik kanan dan pergi ke "Ekstrak Di Sini".
  3. Masukkan folder yang diekstrak (mis: "rsync-3.1.3")
  4. Klik kanan layar di folder manager Anda dan pergi ke "Open in Terminal." Atau, lakukan langkah 2 hingga 4 secara manual di baris perintah. Pada akhirnya Anda hanya perlu cddiedit ke direktori yang diekstrak ini yang berisi rsynckode sumber.
  5. Periksa versi saat ini rsync. Catat ini sehingga Anda dapat melihat nanti itu benar-benar diperbarui.

    rsync --version
    
  6. Instal alat yang diperlukan:

    sudo apt update
    sudo apt install yodl
    
  7. Membangun:

    ./configure
    make
    sudo make install
    
  8. Pastikan sudah diperbarui:

    rsync --version
    

    Output sampel:

    $ rsync --version
    rsync  version 3.1.3  protocol version 31
    Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
        64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
        socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
        append, no ACLs, xattrs, iconv, symtimes, prealloc
    
    rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
    are welcome to redistribute it under certain conditions.  See the GNU
    General Public Licence for details.
    
  9. Cari halaman manual untuk "progress2". Sekarang Anda akan memiliki akses ke --info=progress2opsi:

    man rsync
    

    ... lalu tekan /tombol dan ketik progress2; tekan Enter untuk mencarinya; tekan nuntuk pencocokan 'n'ext sampai Anda menemukan entri yang Anda cari:

    Ada juga --info=progress2opsi yang menampilkan statistik berdasarkan seluruh transfer, daripada file individual. Gunakan flag ini tanpa mengeluarkan nama file (mis. Hindari -vatau tentukan --info=name0) jika Anda ingin melihat bagaimana transfer dilakukan tanpa menggulir layar dengan banyak nama. (Anda tidak perlu menentukan --progressopsi untuk menggunakan --info=progress2.)

Lihat juga: "Cara menggunakan rsync", oleh Gabriel Staples: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Referensi Sebagian:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
Gabriel Staples
sumber