Как скопировать большие данные по сети?

for i in `cat servers.txt` ; do ping -c1 $i 2>&1 | tee >> ping-output.txt; done

Это выполняет команду ping для каждой строки в файле (используя i в качестве переменной, которая хранит значение и ссылается на переменную с помощью $ i) и перенаправляет весь вывод в [выходной] файл. Часть 2> & 1 захватывает stdout (результаты ping) и stderr (нет ping, потому что нет ошибки хоста) в файл с помощью команды tee.

3
11.11.2016, 15:50
7 ответов

Обновление

Ошибка разрешения (ниже) сводится к удалению флага '-a' (--archive) из команды rsync, чтобы она не пыталась сохранить права собственности и разрешения на копируемые файлы.

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


Операция не разрешена (1)

Последняя ошибка, которую вы видите, скорее всего, является простой проблемой с правами, т.е. у пользователя 'abude' просто нет доступа на запись к /nas/media/), попробуйте сделать эту папку общедоступной для записи:

 chmod a+rwx /nas/media

и повторите команду rsync.

------- (не учитывайте ниже, так как ОП использует NTFS раздел сейчас) -----

Основываясь на этом:

У меня HP Microserver gen 8 с Centos 7 и только один жесткий диск в области отсека, 2 ТБ, смонтированный как fat32.

...

rsync: write failed on "/folder/movie.mkv": Ошибка ввода/вывода (5) rsync error: error in file IO (code 11) at receiver.c(322) >>[receiver=3.0.9]

и ваш последующий комментарий

@GMaster любой файл меньше ~4GB не имеет ошибок. я даже могу увеличить это число до 8-10 ГБ, но не уверен. - Abude 8 часов назад

Я предполагаю, что проблема у вас в том, что вы пытаетесь rsync (по крайней мере, некоторые) файлы размером 4GB+ в файловую систему FAT32, что невозможно сделать, так как это жесткое ограничение на размер файла для FAT32.

Максимальный размер файла 2^32 минус 1 байт

(https://technet.microsoft.com/en-us/library/cc938937.aspx)

Поэтому rsync сообщает об ошибке ввода-вывода файлов:

11     Error in file I/O

(https://linux.die.net/man/1/rsync)

У вас есть следующие варианты:

  • Исключите эти большие файлы из синхронизации с помощью --max-size=SIZE rsync. (и позже обработать их вручную каким-либо способом)

  • Разделить их на более мелкие части (например, с помощью find и split)

  • Преобразовать вашу файловую систему в NTFS или Ext4 и т.д. (например, см. https://askubuntu. com/questions/303091/convert-fat32-partition-to-ntfs-without-data-loss)

1
27.01.2020, 21:10

ошибка: ошибка в файле IO (код 11) на сайте receiver.c (322) 1. / папка доступна для записи?

rsync: соединение неожиданно закрыто (на данный момент получено 490 байт) [отправитель] 2. SSH упал. вы можете использовать ssh? keyless или pw?

Вы сказали: «Я пытаюсь скопировать файлы (около 100 ГБ за раз) по сети с локального компьютера». Надеюсь, я не ошибся. Целевой IP-адрес - немаршрутизируемый IP (192.168.0.106)? Возможно, вы используете VPN.

rsync -avr * user@<remoteIP>:/folder

используйте --bwlimit, чтобы «замедлить работу», если соединение прерывается. используйте --partial для возобновления прерванных попыток

0
27.01.2020, 21:10

Попробуйте использовать dd по сети. dd if = / dev / sda | ssh (скрытый) "dd of = / dev / sdb" Копирует SDA в sdb

-2
27.01.2020, 21:10

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

Это не место, чтобы делать учебник по торрентам.

Вы можете посмотреть здесь , например, или найти что-то вроде:

Как создать частный торрент

6
27.01.2020, 21:10

Установите FTP-сервер на машине с данными. Его нужно будет запускать только на время, необходимое для загрузки файла, после чего его можно выключить. Вы можете использовать такой инструмент, как wget, чтобы получить его. Таким образом, если загрузка прервется, ее можно будет возобновить без потери времени.

0
27.01.2020, 21:10

Предполагая, что вы находитесь в локальной или другой защищенной сети, вы можете передавать данные напрямую с помощью netcat или nc в зависимости от вашего дистрибутива.

На целевой машине:

nc -l 0.0.0.0 45999 | tar -xz

На исходной машине:

tar -cz the_files_or_folder | nc <target IP> 45999

Это приведет к сжатию и сжатию всех желаемых файлов и напрямую перенаправит их (незашифрованные, следовательно, в локальную или безопасную сеть) на целевую машину через TCP, на принимающая сторона nc будет слушать и направлять их в tar для распаковки и разархивирования. Вы можете удалить аргумент z в и отправляющих, и получающих команды tar , чтобы исключить сжатие и отправить данные как есть.

Также на целевой машине IP 0.0.0.0 будет прослушивать все интерфейсы, это может быть немного более небезопасно, если у вас есть другие интерфейсы, чтобы избежать этого, просто замените желаемый IP-адрес, достижимый отправкой машина.

1
27.01.2020, 21:10

rsync — лучшее решение. Я рекомендую вам удалить -z, чтобы пропустить сжатие. Сжатие может занимать дополнительное место на диске для временных сжатых файлов. Таким образом, вы должны использовать:

rsync -av -e "ssh" * (hidden)

3
27.01.2020, 21:10

Теги

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