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 -P
cờ để 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.
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
in, nhấn Ctrl+Z gửi TSTP
. Tiếp tục với lệnh fg
hoặc bg
trong thiết bị đầu cuối hoặc tín hiệu CONT
.
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
), bởi vì rsync
sẽ kiểm tra lại tất cả các tệp và xử lý tệp mà nó 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ể --inplace
với một cái gì đó khác, nhưng tôi nghĩ không có lựa chọn duy nhất 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 treo máy tính xách tay của bạn và TCP hết thời gian kết nối. Hết thời gian chờ cuối cùng sẽ lọc ra cấp ứng dụng, nhưng có thể mất một lúc. Ctrl+C và chạy rsync một lần nữa.
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 cảnh nó.
Chạy rsync
với --partial
cờ. Sau đó, nó sẽ giữ chuyển một phần và tiếp tục một phần tệp khi bắt đầu.
Mọi người ở đây đã đề cập đến việc sử dụng --partial
cờ hoạt động, nó cần được đề cập tuy nhiên nó chỉ tiếp tục lại khi --append
hoặc là --append-verify
cờ được sử dụng khi tiếp tục.
--partial
tạo một tệp ẩn của tệp chưa kết thúc quá trình đồng bộ hóa, tệp đượ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 --append
sau khi tiếp tục, nếu không thì không sử dụng --append
, tệp ẩn chưa hoàn thành được giữ và không đầy đủ.
Kết luận: Bạn chỉ có thể ngắt rsync --partial
bằng cách sử dụng Ctrl + C nếu bạn dùng rsync --append
khi 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 ra ngày 5 tháng 4 năm 2016)