Bagaimana saya bisa menjeda / melanjutkan rsync

49

Bagaimana saya bisa menjeda rsync yang sedang berjalan?

Pertama kali saya melakukan Ctrl+ Cuntuk membunuhnya dan menggunakan -Pbendera untuk menjalankan lagi. Apakah ini cenderung merusak transfer file saat ini?

Kedua kalinya saya cukup menidurkan MacOS (dengan menutup tutupnya). Melihat proses yang berjalan saya dapat melihat 2 (tidak yakin mengapa) dengan status 'S'.

Sudah mencoba

kill -SIGCONT

untuk melanjutkan proses, tetapi tidak berpengaruh.

tanya
sumber

Jawaban:

61

Anda dapat menjeda program apa pun dengan mengirimkannya sinyal TSTP(sopan) atau STOP(memaksa). Di terminal tempat Anda menjalankan rsync, menekan Ctrl+ Zmengirim TSTP. Lanjutkan dengan fgatau bgperintah di terminal atau CONTsinyal.

Aman untuk membunuh proses rsync dan menjalankan semuanya lagi; itu akan melanjutkan di mana ia tinggalkan. Ini mungkin sedikit tidak efisien, terutama jika Anda belum lulus --partial(termasuk dalam -P), karena rsyncakan memeriksa semua file lagi dan memproses file itu terputus dari awal.

Mungkin ada kombinasi opsi yang tidak biasa yang akan menyebabkan beberapa file tidak disinkronkan dengan benar, mungkin --inplacedengan sesuatu yang lain, tapi saya pikir tidak ada opsi tunggal akan menyebabkan ini.

Jika Anda melepas laptop Anda dan menghubungkannya kembali di tempat lain, itu mungkin mendapatkan alamat IP yang berbeda. Kemudian koneksi TCP yang digunakan oleh rsync akan terputus, jadi Anda harus mematikannya dan mulai lagi. Ini juga dapat terjadi jika Anda menangguhkan laptop Anda dan koneksi TCP habis. Batas waktu pada akhirnya akan menyaring ke tingkat aplikasi, tetapi itu bisa memakan waktu cukup lama. Aman untuk menekan Ctrl+ Cdan menjalankan rsync lagi.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Sebenarnya membunuh rsync -avhhanya kehilangan file saat ini sedang disalin, jika file besar Anda kehilangan banyak waktu. Mungkin Ctrl+zmemindahkan file sementara (mulai dengan titik) dan kemudian Ctrl-Crsync mungkin solusi yang lebih baik.
malat
Terima kasih atas penjelasan terincinya. Untuk mengklarifikasi: ctrl + z untuk menjeda, fg untuk melanjutkan, bg untuk berhenti.
Praesagus
3
@Praesagus bguntuk menempatkan proses ke b ack g bulat , tidak berhenti.
Jari Keinänen
--partialadalah apa yang saya butuhkan. Saya mencoba menyalin 21GB data, dan di antaranya saya memiliki file 6,6GB. Masalahnya adalah jaringan membunuh koneksi saya setelah beberapa GB transfer data, untuk --partialitulah yang saya butuhkan.
AnthonyD973
20

Ctrl+ Zuntuk menangguhkan, dan:

$ fg

untuk melanjutkan, gunakan

$ jobs

untuk melihat pekerjaan yang ditangguhkan; bg [number]untuk latar belakang mereka; fg [number]untuk latar depan itu.

gauteh
sumber
2
Ctrl+Shanya menunda hasil gulir, bukan program yang mendasarinya (kecuali jika diblokir menunggu terminal untuk menerima hasilnya), dan hanya jika Anda belum menonaktifkannya.
Gilles 'SANGAT berhenti menjadi jahat'
1
Dengan status 'S' saat ini, ia tidak melanjutkan. Apakah aman untuk membunuhnya menggunakan Ctrl + C dan menjalankan rsync lagi? Opsi apa lagi yang saya miliki? Akan mengingatnya lain kali, terima kasih.
qnoid
1
Juga catat bahwa Ctrl-Z untuk menunda proses kemungkinan, setelah beberapa waktu, menghasilkan batas waktu koneksi jaringan TCP yang dibuat oleh program itu. Sehingga meninggalkan rsync ditangguhkan selama lebih dari beberapa menit akan sangat mungkin menyebabkannya berhenti secara tiba-tiba dengan pesan kesalahan ketika Anda meletakkannya kembali di latar depan dan menemukan bahwa soket yang terbuka mengembalikan kesalahan dari membaca dan menulis.
Jim Dennis
8

Jalankan rsyncdengan --partialbendera. Kemudian akan menyimpan transfer parsial dan melanjutkan file parsial ketika dimulai.

bahamat
sumber
5

Orang-orang di sini telah disebutkan menggunakan --partialbendera karya, perlu disebutkan namun yang hanya resume ketika --appendatau --append-verifybendera yang digunakan saat melanjutkan.

--partialmembuat file tersembunyi dari file yang belum menyelesaikan proses sinkronisasi, file tersebut disimpan ketika Anda mengganggu sinkronisasi. Itu terus menyelesaikan file ketika Anda menggunakan --appendsetelah melanjutkan, jika tidak ketika tidak menggunakan --append, file tersembunyi yang tidak lengkap disimpan dan tetap tidak lengkap.

Kesimpulan: Anda bisa menginterupsi rsync --partialpenggunaan Ctrl+ Cjika menggunakan rsync --appendsaat melanjutkan

(Sumber: Dapatkah rsync melanjutkan setelah terputus? Diambil 5 April 2016)

Mehdi Nellen
sumber
jadi jika saya telah menggunakan rsync --avP <source> <destination>, saya harus menjeda dengan CTRL + C dan kemudian melanjutkan hanya dengan mengetik rysnc --append?
kingmakerking
@kingmakerking ya
Mehdi Nellen
@kkingmakerking: Tidak. Anda masih memerlukan opsi dari rsync pertama Anda, dan sumber serta tujuan. Untuk melanjutkan, Anda me-restart perintah rsync Anda sebelumnya, dan menambahkan --append ke opsi yang ada.
mivk