Я копирую большой файл с помощью scp
, и понял, что в месте назначения может быть недостаточно места для завершения. Есть ли способ приостановить его, возможно, на несколько часов, и возобновить позже? Кроме того, если он не удастся ( no space left on device
), смогу ли я возобновить его, когда освобожу немного места?
(Обратите внимание, что scp
уже запущено; такие решения, как использование другой программы, не сработают.)
решение1
Вы можете приостановить процесс с помощью SIGSTOP, а затем продолжить его с помощью SIGCONT. ( kill -l
Список сигналов см. в разделе , а ps
идентификатор процесса — в разделе ).
Однако есть большая вероятность, что это не сработает. Например, если у вас есть маршрутизатор между источником и пунктом назначения, который замечает и «очищает» мертвое соединение. Большинство маршрутизаторов SOHO, похоже, делают это, потому что очистка соединений означает меньшее использование памяти. (И, таким образом, они могут создавать более дешевые маршрутизаторы).
Если это произойдет, вам придется либо выполнить копирование еще раз с помощью scp, либо использовать rsync.
Rsync имеет преимущество в том, что он сравнивает уже существующие файлы и не копирует данные без необходимости. В вашем случае он должен обнаружить уже существующий, частично загруженный файл и загрузить только оставшуюся часть файла
Синтаксис будет таким:rsync -v -e ssh /home/my_file [email protected]:~
-v для подробного вывода. -e "ssh options" для указания ssh в качестве удаленной оболочки.
Если ваши данные сжимаемы, то вы можете добавить -z
функцию сжатия данных.