Перенос больших (8 ГБ) файлов по ssh

Я попробовал его с помощью SCP, но он говорит «Отрицательный размер файла».

>scp matlab.iso [email protected]:/matlab.iso
matlab.iso: Negative file size

Также пытался использовать SFTP, работал нормально до тех пор, пока не переместил 2 ГБ файла, а затем остановился:

sftp> put matlab.iso
Uploading matlab.iso to /home/x/matlab.iso
matlab.iso                                           -298% 2021MB -16651.-8KB/s   00:5d
o_upload: offset < 0

Любая идея, что может быть неправильным? Не поддерживайте файлы поддержки SCP и SFTP размером более 2 ГБ? Если да, то как я могу передавать большие файлы через SSH?

Конечная файловая система - ext4. Распространение Linux - CentOS 6.5. В настоящее время файловая система имеет (доступные) большие файлы (до 100 ГБ).

25 голосов | спросил eimrek 16 MarpmMon, 16 Mar 2015 19:59:08 +03002015-03-16T19:59:08+03:0007 2015, 19:59:08

3 ответа


6

Исходная проблема (основанная на чтении всех комментариев к вопросу OP) заключалась в том, что исполняемый файл scp в 64-битной системе был 32-битное приложение. 32-разрядное приложение, которое не скомпилировано с поддержкой большого файла , заканчивается поиском указатели, которые ограничены 2^32 =~ 4GB.

Вы можете указать, является ли scp 32-разрядным, используя file:

file `which scp`

В большинстве современных систем он будет 64-битным, поэтому никакое усечение файла не произойдет:

$ file `which scp`
/usr/bin/scp: ELF 64-bit LSB  shared object, x86-64 ...

32-приложение должно по-прежнему поддерживать «большие файлы», но его необходимо скомпилировать из источника с поддержкой большого файла, который, по-видимому, не был таким.

Рекомендуемое решение, возможно, заключается в использовании стандартного 64-битного дистрибутива, где по умолчанию компиляция приложений выполняется как 64-разрядная версия.

ответил arielf 24 MaramTue, 24 Mar 2015 00:25:13 +03002015-03-24T00:25:13+03:0012 2015, 00:25:13
32

Rsync очень хорошо подходит для передачи больших файлов по ssh, поскольку он может продолжать переносы, которые были прерваны из-за некоторая причина. Поскольку он использует хеш-функции для обнаружения равных блоков файлов, функция продолжения довольно надежна.

Это удивительно, что ваш sftp /scp не поддерживает большие файлы - даже с 32-битными двоичными файлами, Поддержка LFS должна быть довольно стандартной , в настоящее время.

ответил maxschlepzig 16 MarpmMon, 16 Mar 2015 23:38:15 +03002015-03-16T23:38:15+03:0011 2015, 23:38:15
20

Я не уверен в ограничениях размера файла для SCP и SFTP, но вы можете попробовать решить проблему с помощью split:

split -b 1G matlab.iso

Это создаст 1 файл GiB, который по умолчанию называется xaa, xab, xac, .... Затем вы можете использовать scp для передачи файлов:

scp xa* [email protected]:

Затем в удаленной системе воссоздайте исходный файл с cat:

cat xa* > matlab.iso

Конечно, штрафы за это временное решение - это время, затраченное на операции split и cat, а также дополнительное дисковое пространство, необходимое для локальных и удаленных систем.

ответил spinup 16 MarpmMon, 16 Mar 2015 20:23:14 +03002015-03-16T20:23:14+03:0008 2015, 20:23:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132