Искажение данных после использования "scp" для передачи
Недавно я перенес набор данных с одного сервера на hpcc(высокопроизводительные вычисления). Команда выглядит так:
scp /folder1/*.fastq.gz xxx@hpcc:/home/
scp /folder2/*.fastq.gz xxx@hpcc:/home/
scp /folder3/*.fastq.gz xxx@hpcc:/home/
Я открываю несколько терминалов для передачи данных одновременно. В общей сложности у меня есть ~50 таких файлов fastq.gz, каждый около 10 ГБ. Мне просто интересно, есть ли вероятность того, что данные (особенно такие большие данные) будут искажены при передаче указанным выше способом?
Потому что данные на сервере в хорошем состоянии; в то время как некоторые данные после копирования в hpcc искажены.
спасибо
2 ответа
Я сильно сомневаюсь, что ваши данные были повреждены при передаче scp(1)
,
TCP предоставляет (слабую) 16-битную контрольную сумму CRC потоков трафика. Поскольку длина его составляет всего шестнадцать битов, использование целостности данных на основе TCP означает, что поврежденные пакеты все равно будут проверять примерно один каждые (2^16) поврежденных пакетов. Я давно потерял связь (и математику), но смутно напоминаю, что поврежденные данные будут проверяться как правильные раз в два-четыре гигабайта в общедоступном Интернете - хотя эти числа основывались на определенной частоте появления ошибок на раз я читаю эту статистику.
Версия 2 SSH ввела проверки подлинности сообщений в протокол. Они согласовываются между узлами, но я ожидаю, что самым слабым из них будет MD5, который обеспечивает 128-битный криптографический хэш данных. Криптографические хэши намного более продвинуты, чем циклические проверки избыточности, которые были более распространены для обнаружения ошибок передачи данных два десятилетия назад, и 128 бит - это значительное увеличение размера контрольной суммы. Мы можем не доверять MD5 настолько, чтобы полагаться на него исключительно в наши дни, чтобы противостоять преданным злоумышленникам, но этого должно быть достаточно для обнаружения ошибок, которые происходят по ошибке во всех случаях, кроме самых невероятных.
В другом месте я бы посмотрел на вашу коррупцию - в первую очередь, на целевые диски, на которых вы хранили свои данные.
Я знаю, что это древний вопрос, но я не думаю, что scp может быть ответственным; мое предположение - столкновение имени файла.
Вы заявили, что у вас одновременно запущено несколько копий scp. Команды, вставленные выше, скопируют содержимое /folder1
, /folder2
а также /folder3
в /home
, Если у вас было два файла с одним и тем же именем, например
/folder1/argle.fastq.gz
/folder1/bargle.fastq.gz
/folder2/argle.fastq.gz
тогда у вас будет столкновение имени файла на /home
, Поскольку scp с радостью перезапишет файлы на dest
и я не думаю, что он блокирует файлы во время работы, копирование двух разных файлов с одинаковыми именами в одно и то же место может легко привести к повреждению файла.