Как мне возобновить копию большого файла в Linux? У меня есть огромный файл (несколько гигабайт), частично скопированный на сетевой диск, и это заняло много времени, и в основном это было сделано до того, как операция копирования была остановлена из-за проблемы с сетью, которая теперь исправлена. Как мне возобновить копирование файла. Мне не нужен неэффективный скрипт, и ecp не работает (кажется, он не работает для больших файлов).
9
Если вы знаете, что вам просто нужно добавить локальный файл и не хотите использовать rsync (который может потребовать много времени для вычисления контрольных сумм), вы можете использовать curl. Например, если у вас есть большой файл на медленном съемном USB-накопителе,
/media/CORSAIR/somefile.dat
и только половина его находится в текущем каталоге, возобновите:curl -C - -O "file:///media/CORSAIR/somefile.dat"
источник
Да, rsync - это путь. Для меня мы передали более 100 ГБ данных через rsync + ssh. Если вы ищете истинную резервную копию, убедитесь, что вы используете
-a
опцию (архив), чтобы сохранить атрибуты файла (время, владельцы, разрешения и т. Д.)Это также полезно для копирования больших файлов, которые могут измениться в процессе миграции. Вы можете предварительно загрузить данные в место назначения и, как только будете готовы к окончательному копированию, сделать это снова, но только на долю времени. Вы можете сэкономить на фактическом времени простоя, используя rsync для его полного потенциала.
PS Использование
v
(многословно) может замедлить передачу многих файлов.источник
Команда, которую вы хотите, будет что-то вроде
если вы не можете получить доступ к серверу через ssh и запустить rsync таким образом, в этом случае команда FlyingFish лучше всего подойдет.
источник
rsync хорош, только если у вас есть rsync на целевом сервере. В таком случае это действительно лучшее решение.
Но не иначе. Поскольку rsync предназначено только для копирования измененных частей в большие файлы, предполагается, что эти измененные части могут находиться в любом месте файла. Это означает, что будет проверена контрольная сумма всех блоков, которые уже были скопированы. Если у вас нет rsync на удаленном конце, ваш локальный rsync начнёт с чтения всего, что уже было передано.
Если на вашем исходном компьютере есть веб- или ftp-сервер, вы можете использовать wget с конечного сервера с параметром «--continue». (или скручивать с опцией "--continue-at [- | size]").
Если на вашем конечном компьютере есть FTP-сервер, вы можете использовать curl на исходном компьютере с параметром --append.
В качестве последнего средства вы можете использовать dd с аргументами "bs =" (размер блока), "skip =" и "seek =". Например:
Предположим, вы сможете использовать блоки по 2048 байт. Если размер файла назначения составляет 2 048 000 000 байт (2 ГБ), то это 1 000 000 блоков по 2048 байт. Чтобы добавить оставшуюся часть исходного файла к месту назначения, вы можете
дд если = исходный_файл = конечный_файл bs = 2048 пропуск = 1000000 поиск = 1000000
Вы можете использовать больший размер блока для улучшения скорости передачи. Просто не забудьте указать размер блока с помощью bs =, и значение, пропускаемое и ищущее, указывается в блоках, а не в байтах.
источник