Чому scp затримується? Як це вирішити?


52

Коли я намагався скопіювати файл (розміром,) через мережу за допомогою scp, я отримую помилку <file> stalled Чому це відбувається? Як це вирішити?


Мені подобається rclone для цього; У мене ніколи не було проблем з цим.
Хатшепсут

Я скасував і перезапустив команду scp, і проблема пішла на мене
kilojoules

Відповіді:


72

Це відбувається тому scp, що намагається захопити якомога більше пропускної здатності, і будь-яка затримка (через брандмауер тощо) може зупинити її. Обмеження пропускної здатності (з опцією -l) виправить це.

Наприклад, ви можете обмежити пропускну здатність до 1 МБ / с (= 8192 Кбіт / с):

 scp -l 8192 <file> <destination>

Джерело: http://www.aixmind.com/?p=1371 - Wayback Machine


Дякую за вашу відповідь та посилання на джерело. Але я думаю, що ваше джерело говорить, що це -l 8192означає 8192 Кбіт / секунду, і -lможе працювати до 1 Мбіт / секунду (що, здається, нині трохи застаріло).
elmicha

2
@elmicha 8192Kb == 1 МБ
Lelouch Lamperouge

@Eknath На жаль, ви праві.
elmicha

2
Просто для уточнення: приклад обмежує пропускну здатність scp до 8192 Кбіт / секунду. Автор статті стверджує, що цей номер повинен спрацьовувати для з'єднань до 1 Мбіт / секунду.
Ервін Весселс

1
Працював як шарм :)
Саураб

5

Мені вдалося вирішити це за допомогою rsync:

rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /tmp/bigfile.txt user@host.com:/tmp/

2

Є ймовірність, що ти стоїш за брандмауером Cisco ASA? Якщо так, вимкніть "рандомізацію номера послідовностей", і це допоможе дуже багато - також відключіть TCP Offload (ethtool -K $ INTERFACE tso off gso off gro off), якщо ви працюєте на Cisco ASA з Broadcom NIC на своєму сервері .


Це геній. Ця зміна є постійною чи мені потрібно десь поставити команду? Щоб було зрозуміло, ви повинні встановити це на своєму NIC, а не на інтерфейсі cscotun.
міджард

1

Враховуючи повідомлення про помилку, яке ми отримали, коли scp застопорився, я підозрював, що це шифрування не вдалося. "Неможливо встановити справжність хоста" myserver (10.10.11.12) ". Відбиток ключа ECDSA - SHA256: + zkyskXlxVQ0kRorLW26pzprIYbsM4N3hbaDLz1RNpo" Зважаючи на це, я запустив "scp -c aes128-ctr /tmp/test.dan src myserver: / tmp / bigfile ". scp вдався з альтернативним шифром. Чи є проблема із шифром за замовчуванням, який видає буферний простір?

Можливо, спробуйте додати "-c" за допомогою чергового шифру і побачити, чи вирішує він ваше стійло

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