Если Ваш маршрутизатор имеет внешний IP-адрес, и Ваши машины на LAN имеют локальные адреса (например, 192.168.x.x) необходимо настроить перенаправление портов от WAN до LAN (порт 22 для SSH). С другой стороны, можно установить машину как демилитаризованную зону (демилитаризованная зона), но это не рекомендуется, так как она выставляет машину полностью.
Причина, по которой это происходит, что в том, что программа говорит: «Напишите эти данные», и ядро Linux копирует его в буфер памяти, который входит в очередь, чтобы перейти на диск, а затем говорит: «ОК, Готово". Таким образом, программа думает, что она скопировала все. Затем программа закрывает файл, но вдруг ядро заставляет его ждать, пока этот буфер выдвинут на диск.
Итак, к сожалению, программа не может сказать вам, сколько времени потребуется, чтобы промыть буфер, потому что он не знает.
Если вы хотите попробовать какие-то уловки пользователя, вы можете уменьшить размер буфера, который использует Linux, установив параметр ядра VM.DIRTY_BYTES
к чему-то вроде 15000000
( 15 МБ). Это означает, что приложение не может получить более 15 МБ в преддверии его фактического прогресса. (Вы можете изменить параметры ядра на лету с sudo sysctl vm.dirty_bytes = 15000000
, но заставляя их оставаться на перезагрузке, требует изменения файла конфигурации /etc/sysctl.conf
, который может Будьте специфичны для вашего дистрибутива.)
Побочный эффект состоит в том, что ваш компьютер может иметь более низкую пропускную способность писать данные с помощью этой настройки, но в целом я считаю, что это полезно видеть, что программа работает долго, пока она пишет Множество данных против путаницы имении программы, по-видимому, выполняются с его работой, но система сильно отстает, так как ядро делает фактическую работу. Установка Dirty_Bytes
До разумного небольшого значения также может помочь предотвратить отсутствие невозможности вашей системы, когда вы низко в свободной памяти, и запустите программу, которая внезапно пишет много данных.
Но, не устанавливайте это слишком маленьким! Я использую 15 МБ в качестве приблизительной оценки, что ядро может промыть буфер до нормального жесткого диска в 1/4 секунды или меньше. Это держит мою систему от чувства «отставать».
Поздно на вечеринку, но я использую обходной путь для копирования больших файлов на USB-накопитель rsync
.
Основной синтаксис, который я всегда успешно использую, следующий:
rsync -avh /home/user/Documents /media/user/myusbstick
Предупреждение:Если вы хотите скопировать всю папку «Документы», используйте синтаксис. Но если вы хотите скопировать только файл, а не папку , вам нужно добавить косую черту. Вот так:
rsync -avh /home/user/Documents/ /media/user/myusbstick
Конечно, если вы хотите скопировать файл:
rsync -avh /home/user/Documents/file1 /media/user/myusbstick
для нескольких файлов
rsync -avh /home/user/Documents/file1 /home/user/Documents/file2 /media/user/myusbstick
Этот синтаксис работает для любой папки/файла, который вы хотите скопировать.
Я понимаю, что это не настоящее решение, но это простой и безопасный способ избежать надоедливых проблем.