Завершення завдання rsync завершено після закриття з'єднання SSH


13

Я передаю велику кількість файлів з одного комп'ютера на інший за допомогою rsync. Я роблю це, вводячи SSHing у вихідний комп'ютер і виконуючи таку команду:

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

Навіть якщо я додаю nohupперед цією командою, коли я закриваю вікно терміналу, з якого я SSHed, з'єднання закривається.

Як я можу це зробити, щоб передача файлів продовжувалась, коли я закриваю SSH-з'єднання?

Відповіді:


16

Причина, чому nohupвам не допомагають, полягає в тому, що програма працює зі стандартними файлами вводу-виводу.

Ось 'уривок із Вікі-сторінки для nohup:

Примітка. Застосування фонових завдань, що не підтримуються, зазвичай використовується, щоб уникнути їх припинення під час виходу з віддаленого сеансу SSH. Інша проблема, яка часто виникає в цій ситуації, полягає в тому, що ssh відмовляється виходити ("висить"), оскільки відмовляється втрачати будь-які дані з / до фонових завдань. Цю проблему можна також подолати шляхом перенаправлення всіх трьох потоків вводу / виводу:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &Також зауважте, що закриваючий сеанс SSH не завжди надсилає сигнал HUP у залежні процеси. Серед інших, це залежить від того, був виділений чи ні псевдотермінал.

Ви можете використовувати screenдля цього.

Просто створіть сеанс на екрані за допомогою: screen -S rsync тоді ви зніміть екран із CTRL+A d

І ви можете відключитись від SSH


4
Хочу додати, що при виконанні будь-якої роботи, яка буде перервана, наприклад втраченим з’єднанням, буде проблематичною, а потім запустіть її на екрані. Екран призначений для захисту від випадкових втрат з'єднання. Ви можете увійти в систему віддалено, запустити екран, розпочати роботу, і якщо ви втратите з’єднання, ви можете знову підключитися до будь-якого екземпляра запущеного екрана. Екран отримав і іншу корисну функціональність - захоплення сеансу в файл журналу, наявність декількох "екранів" за один сеанс (економія мережевих накладних витрат) та кілька глядачів (стиль класу). Також варто згадати, що tmux - це альтернатива екрану.
Йохан

6

Ця екранна команда чудово, але не працювала точно для моїх потреб.

Це спрацювало набагато краще:

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

працював на мене, як і прийняту відповідь, дякую
Саларос
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.