У меня есть сценарий оболочки, в котором я извлекаю файл *.gz удаленного сервера, используя приведенную ниже команду, а после scp я выполняю команду gunzip. Проблема в том, что при выполнении scp соединение теряется, поэтому неполный файл *.gz сохраняется в каталоге моего локального сервера, и когда я пытаюсь распаковать его в следующей строке ниже команды scp, он успешно распаковывает файл, и когда я открываю файл, он содержит мусорные значения.
scp ${HostUser}@${HostServer}:$4/*$no*.gz
gunzip
При отладке я обнаружил следующую причину: 1. Неполная передача файла из-за потери соединения. 2. При выполнении команды gunzip вручную она выдавала ошибку «конец файла не найден». Таким образом, он случайным образом создавал значение мусора в файле, и мой скрипт идти к успеху, что неправильно. Итак, мои запросы:
Могу ли я сохранить код возврата команды scp, с помощью которого я могу узнать, была ли выполнена полная передача файла? команда
Я также сталкиваюсь со странной проблемой: при первом запуске команды scp соединение теряется, но когда я снова запускаю команду scp из того же сеанса, она проходит успешно. Но в производстве каждый раз это будет новый сеанс, поэтому мы не можем позволить себе регулярные сбои в работе. Также один конкретный файл, соединение теряется через 5 секунд. Я проверил, что время ожидания сеанса удаленного сервера составляет 5 минут.
пожалуйста, предложите