Làm cách nào tôi có thể tạm dừng / tiếp tục rsync


49

Làm cách nào tôi có thể tạm dừng một rsync đang chạy?

Lần đầu tiên tôi đã làm Ctrl+ Cđể giết nó và sử dụng -Pcờ để chạy lại. Đây có phải là dễ bị hỏng việc chuyển tập tin hiện tại?

Lần thứ hai tôi chỉ cần đặt MacOS vào chế độ ngủ (bằng cách đóng nắp). Nhìn vào quá trình đang chạy, tôi có thể thấy 2 (không chắc tại sao) với trạng thái 'S'.

Đã thử sử dụng

kill -SIGCONT

để tiếp tục quá trình, nhưng nó không có hiệu lực.

Câu trả lời:


61

Bạn có thể tạm dừng bất kỳ chương trình nào bằng cách gửi tín hiệu TSTP(lịch sự) hoặc STOP(cưỡng bức). Trên thiết bị đầu cuối bạn chạy rsync, nhấn Ctrl+ Zgửi TSTP. Tiếp tục với lệnh fghoặc bgtrong thiết bị đầu cuối hoặc CONTtín hiệu.

Nó là an toàn để giết một quá trình rsync và chạy lại toàn bộ; nó sẽ tiếp tục nơi nó rời đi. Nó có thể hơi kém hiệu quả, đặc biệt nếu bạn chưa vượt qua --partial(bao gồm trong -P), vì rsyncsẽ kiểm tra lại tất cả các tệp và xử lý tệp bị gián đoạn từ đầu.

Có thể có các kết hợp tùy chọn bất thường sẽ dẫn đến một số tệp không được đồng bộ hóa đúng cách, có thể --inplacevới một số thứ khác, nhưng tôi nghĩ không có tùy chọn duy nhất nào sẽ gây ra điều này.

Nếu bạn ngắt kết nối máy tính xách tay của bạn và kết nối lại nó ở một nơi khác, nó có thể nhận được một địa chỉ IP khác. Sau đó, kết nối TCP được sử dụng bởi rsync sẽ bị cắt đứt, do đó bạn phải giết nó và bắt đầu lại. Điều này cũng có thể xảy ra nếu bạn tạm dừng máy tính xách tay của mình và hết thời gian kết nối TCP. Thời gian chờ cuối cùng sẽ lọc ra mức ứng dụng, nhưng có thể mất một lúc. An toàn khi nhấn Ctrl+ Cvà chạy lại rsync.


1
Trên thực tế, việc giết rsync -avhtệp chỉ đơn giản là sao chép tệp hiện tại đang bị sao chép, nếu tệp lớn, bạn đã mất khá nhiều thời gian. Có thể Ctrl+zdi chuyển tệp tạm thời (bắt đầu bằng dấu chấm) và sau đó Ctrl-Crsync có thể là giải pháp tốt hơn.
malat

Cảm ơn đã giải thích chi tiết. Để làm rõ: ctrl + z để tạm dừng, fg để tiếp tục, bg để dừng lại.
Praesagus

3
@Praesagus bgđặt quá trình để các b ack g tròn , không ngừng.
Jari Keinänen

--partiallà những gì tôi cần. Tôi đang cố gắng sao chép 21GB dữ liệu và trong số này tôi có một tệp 6,6GB. Vấn đề là mạng giết chết kết nối của tôi sau vài GB truyền dữ liệu, đó --partialchính xác là thứ tôi cần.
AnthonyD973

20

Ctrl+ Zđình chỉ và:

$ fg

để tiếp tục, sử dụng

$ jobs

để xem công việc bị đình chỉ; bg [number]để làm nền cho chúng; fg [number]để tiên phong nó.


2
Ctrl+Schỉ tạm dừng đầu ra cuộn, không phải chương trình cơ bản (trừ khi nó bị chặn chờ thiết bị đầu cuối chấp nhận đầu ra của nó) và chỉ khi bạn không tắt nó.
Gilles 'SO- ngừng trở nên xấu xa'

1
Với trạng thái 'S' hiện tại, nó không tiếp tục. Có an toàn khi giết nó bằng Ctrl + C và chạy lại rsync không? Tôi có những lựa chọn nào khác? Sẽ có điều đó trong tâm trí thời gian tới, cảm ơn.
qnoid

1
Cũng lưu ý rằng Ctrl-Z để tạm dừng một quá trình có khả năng, sau một thời gian, sẽ dẫn đến thời gian chờ của bất kỳ kết nối mạng TCP nào được thiết lập bởi chương trình đó. Do đó, việc để một rsync bị treo trong hơn một vài phút sẽ rất có thể khiến nó thoát đột ngột với thông báo lỗi khi bạn đặt nó trở lại nền trước và nó thấy rằng các ổ cắm đã mở của nó đang trả về lỗi từ đọc và ghi.
Jim Dennis

8

Chạy rsyncvới --partialcờ. Sau đó, nó sẽ giữ chuyển một phần và tiếp tục các phần một phần khi bắt đầu.


5

Mọi người ở đây đã đề cập đến việc sử dụng --partialcờ hoạt động, nó cần được đề cập tuy nhiên nó chỉ tiếp tục khi cờ --appendhoặc --append-verifyđược sử dụng khi tiếp tục.

--partialtạo một tập tin ẩn của tập tin chưa hoàn thành quá trình đồng bộ hóa, tập tin được giữ khi bạn ngắt đồng bộ hóa. Nó tiếp tục hoàn thành tệp khi bạn sử dụng --appendsau khi tiếp tục, nếu không khi không sử dụng --append, tệp ẩn không đầy đủ được giữ và không đầy đủ.

Kết luận: Bạn chỉ có thể ngắt rsync --partialsử dụng Ctrl+ Cnếu bạn sử dụng rsync --appendkhi tiếp tục

(Nguồn: rsync có thể tiếp tục lại sau khi bị gián đoạn không? Lấy 5 tháng 4 năm 2016)


Vì vậy, nếu tôi đã sử dụng rsync --avP <source> <destination>, tôi phải tạm dừng nó bằng CTRL + C và sau đó tiếp tục chỉ bằng cách nhập rysnc --append?
kingmakerking

@kingmakerking có
Mehdi Nellen

@kingmakerking: Không. Bạn vẫn cần các tùy chọn từ rsync đầu tiên của mình, nguồn và đích. Để tiếp tục, bạn khởi động lại lệnh rsync trước đó và thêm --append vào các tùy chọn hiện có.
mivk
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.