З цим я стикався і rsyncв минулому. Для мене це рішення вирішило запустити його протягом screenсеансу, який міг допомогти підтримувати з'єднання з віддаленим сервером.
screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session
Ви можете перевірити стан, запустивши screen -x rsync(або як ви вирішите назвати сеанс, якщо ви дасте ім'я, яке не потрібно). Це відновить вашу поточну оболонку до цього сеансу. Просто не забудьте знову від'єднатись від нього після перевірки стану, щоб він продовжував працювати у фоновому режимі.
Ви також можете виконати команду для запуску screenу фоновому режимі одним махом, зробивши [хтось, будь ласка, виправте мене, якщо я помиляюся] screen -dm 'command'. Можливо, ви захочете, man screenперш ніж спробувати останню.
Редагувати:
Я редагую свою відповідь, оскільки ви підтвердили, що screenне допомагаєте в цьому сценарії, але ви відповіли на мій коментар, запропонувавши спробувати scpі побачити, які результати ви отримаєте, на що ви відповіли, що це не дивно, але це спрацювало чудово.
Тому моя нова відповідь така: використовувати scp- або ssh(з tar) - замістьrsync
Звичайно, scpне підтримує величезну кількість функцій , як rsync, але ви на самому справі будете здивовані , щоб виявити, скільки функцій , які він робить підтримку, які майже ідентичні , що і rsync.
Реальні сценарії scpта інші альтернативи rsync:
Тим часом я мав завдання створити скрипт оболонки, який би витягував журнали з наших виробничих серверів і зберігав їх локально на веб-сервері, щоб розробники могли отримати доступ до них для усунення несправностей. Після невдалої спроби змусити команду Unix встановити rsyncна наші сервери, я придумав вирішення проблеми, scpяка також працювала.
Попри це, я нещодавно змінив сценарій, щоб все, що він використовує, було sshі tar- GNU tar/ gtar, якщо бути точним. GNU tarпідтримує багато варіантів, які ви дійсно знайдете rsync, наприклад --include, --excludeзбереження дозволів / атрибутів, стиснення тощо.
Я зараз це sshдосягаю шляхом приєднання до віддаленого сервера (через pubkey auth) та використання gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]- це записує всю інформацію до того stdout, що потім [локально] передається, щоб tar -xzfна віддаленому сервері виробництва не було внесено змін , і всі файли, переведені як є на локальний сервер. Це чудова альтернатива rsyncв цьому випадку. Єдине, що важливо, tarані scpпідтримка - це додаткові резервні копії та рівень перевірки помилок на рівні блоку rsync.
Повна команда, яку я маю на увазі при використанні, sshі tarбуде щось подібне (віддалений - Solaris 10; місцевий - Debian, для чого це варто):
cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz
У вашому сценарії все було б навпаки - tar -cf -локально, і передача на віддалений сервер через ssh user@remotehost "tar -xf -"- є ще одна відповідь, яка посилається на такий тип поведінки, але не вникає в стільки деталей.
Є кілька інших варіантів, які я включив для прискорення речей. Я невпинно призначав усе, щоб максимально скоротити час виконання. Ви можете подумати, що використання компресії за допомогою tarбуде безглуздим, але це насправді трохи прискорює роботу, як і використання -Cпрапора з sshтим, щоб увімкнути sshстиснення. Пізніше я можу оновити цю публікацію, щоб включити точну команду, яку я використовую (яка дуже схожа на ту, яку я опублікувала), але я не відчуваю, як потрапляти на VPN в той момент, коли я перебуваю у відпустці цього тижня.
На Solaris 10 я також використовую -c blowfish, тому що це найшвидший шифр для автентифікації, а також допомагає прискорити роботу, але наші Solaris 11 або не підтримують його, або цей пакет шифрів відключений.
Крім того, якщо ви вирішите перейти з ssh/ tarопцією, насправді було б гарною ідеєю реалізувати моє оригінальне рішення використання, screenякщо ви робите резервну копію, яка займе деякий час. Якщо ні, то переконайтеся, що ваші налаштування збереження / тайм-аут у вашому режимі ssh_configналаштовані правильно, інакше цей метод також може призвести до поломки труби.
Навіть якщо ви їдете з цим scp, я завжди вважаю, що це найкраща практика для використання screenабо tmuxпід час виконання подібних операцій, про всяк випадок . Багато разів я не дотримуюсь власних порад і не можу це зробити, але це справді хороша практика використовувати один із цих інструментів, щоб гарантувати, що віддалене завдання не вичерпається через те, що ваш активний сеанс оболонки якимось чином відключається.
Я знаю, що ви хочете з’ясувати першопричину вашої rsyncпроблеми. Однак якщо це дійсно важливо, це два чудових вирішення, з якими ви зможете експериментувати.
kerberosдля автентифікації на віддаленому сервері.