Hoàn thành công việc rsync sau khi đóng kết nối SSH


13

Tôi đang chuyển một lượng lớn tệp từ máy tính này sang máy tính khác bằng cách sử dụng rsync. Tôi đang làm điều này bằng cách SSH vào máy tính nguồn và thực thi một lệnh như thế này:

sudo rsync ssh --rsync-path="sudo rsync" source_dir user@host.com:dest_dir.

Ngay cả khi tôi thêm nohuptrước lệnh này, bất cứ khi nào tôi đóng cửa sổ terminal mà tôi đã SSH, kết nối sẽ đóng lại.

Làm cách nào tôi có thể có nó để việc chuyển tập tin của tôi vẫn tiếp tục khi tôi đóng kết nối SSH?

Câu trả lời:


16

Lý do tại sao nohupkhông giúp bạn là vì chương trình hoạt động với các tệp IO tiêu chuẩn.

Đây là 'một đoạn trích từ Trang Wiki cho nohup:

Lưu ý - Các công việc nền không được sử dụng thường được sử dụng để tránh chấm dứt chúng khi đăng xuất khỏi phiên SSH từ xa. Một vấn đề khác thường xảy ra trong tình huống này là ssh đang từ chối đăng xuất ("treo"), vì nó từ chối mất bất kỳ dữ liệu nào từ / đến (các) công việc nền. Vấn đề này cũng có thể được khắc phục bằng cách chuyển hướng cả ba luồng I / O:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &Cũng lưu ý rằng phiên SSH đóng không phải lúc nào cũng gửi tín hiệu HUP đến các quy trình tùy thuộc. Trong số những người khác, điều này phụ thuộc vào việc một thiết bị đầu cuối giả được phân bổ hay không.

Bạn có thể sử dụng screencho điều đó.

Chỉ cần tạo một phiên màn hình với: screen -S rsync sau đó, bạn tách màn hình của mình bằng CTRL+A d

Và bạn có thể ngắt kết nối khỏi SSH


4
Tôi muốn thêm rằng khi thực hiện bất kỳ công việc nào sẽ bị gián đoạn, ví dụ như do mất kết nối sẽ có vấn đề, sau đó chạy nó trong một phiên màn hình. Màn hình được thiết kế để bảo vệ chống mất kết nối ngẫu nhiên. Bạn có thể đăng nhập từ xa, bắt đầu màn hình, bắt đầu công việc và nếu mất kết nối, bạn có thể kết nối lại với bất kỳ trường hợp màn hình đang chạy nào. Màn hình có chức năng hữu ích khác - ghi phiên vào tệp nhật ký, có nhiều "màn hình" trong một phiên (tiết kiệm chi phí mạng) và nhiều người xem (kiểu Lớp học). Cũng đáng đề cập rằng tmux là một thay thế màn hình.
Johan

6

Lệnh màn hình đó vẫn ổn, nhưng không hoạt động chính xác cho nhu cầu của tôi.

Điều này làm việc tốt hơn rất nhiều:

nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &

làm việc cho tôi, giống như câu trả lời được chấp nhận, cảm ơn
Salaros
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.