Время от времени я загружаю очень большой файл через scp, и каждый раз, когда соединение обрывается и пересекает передачу, есть небольшая вероятность.
Есть ли способ возобновить это?
linux
file-transfer
scp
ГДж.
источник
источник
dd
с небольшими размерами блоков может быть медленным (всего 350 кБ / с здесь). К счастью,scp
передачи, кажется, приходят в 1024-байтовые блоки. Если это так для файла (или же, путем усечения его к ближайшему 1024 байт блока), вы можете ускорить его , как это:ssh rsys "dd if=./srcfile bs=1024 skip=$sofar" >> ./destfile
. (Обратите внимание, что$sofar
тогда должно быть количество 1024-байтовых блоков, чтобы пропустить!)rsys
во второй строке это просто пример имени хоста, а не какой-то особый аргумент дляssh
. Я предлагаю вам заменить его,user@host
чтобы избежать путаницы.С
scp
нет.Если оба конца имеют его, вы можете использовать
rsync -LvzP remoteserver:path/to/file localfile
для передачи одного файла.источник
Да, есть способы возобновления с точки прерывания, но это невозможно с помощью scp.
sftp reget filename
делает то, что вам нужно Yarek и Grawity предоставили действительные решения, которые мне +1 для обоих, но для возобновления с точки прерывания мне нравится rsync. Представленные примеры команд предполагают, что вы извлекаете файл с удаленного сервера на локальную рабочую станцию (загрузка). Пожалуйста, имейте в виду, что последние два параметра должны рассматриваться как source_file и target_file в этом порядке. Синтаксис имени файла зависит от того, является ли исходный или целевой файл локальным или удаленным. Если бы я отправлял (загружал) [текстовые] файлы, я бы переписал приведенные ниже примеры:И к решению rsync добавляю
-e ssh
. Вам следует подумать о том, нужно ли вам многословие, сжатие, сохранение владения, разрешения, метка времени, каталоги рекурсоров и т. Д. Проверьте справочные страницы и google относительно параметра -L. Возможно, вы захотите, чтобы символические ссылки оставались ссылками, а не ссылались на них.rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
источник
Есть другое решение (кроме указанных здесь
rsync
илиdd
решений), которое, как я удивляюсь, никто не упомянул: этоreput
командаsftp
.источник
Позволяет указать время ожидания для соединения. Может помешать вашей связи от разрыва.
источник
Да, если оба конца поддерживают sftp - после
scp remoteuser@remotehost:/absolute/filename .
сбоев вы можете продолжить,sftp remoteuser@remotehost
а затемreget /absolute/filename
продолжить загрузку.источник