LINUX.ORG.RU

Быстро перенести(скопировать) мегадиректорию


0

1

Есть папка. В ней 160 гиг мелкого 1-2 килобайтного файла + немереянно вложенных папок.

Нада скопировать на другой сервер. Быстро.

Подмонтировал на сервер с файлом папку с пустого сервера через нфс.

В восемь вечера пустил в скрине копировать. В семь утра зашел - копирует до сих пор.

Есть варианты как можно быстро скопировать?

Через ssh: там, откуда копировать, запускаем gzip и передачу файлов через трубу, там, куда копировать, раззиповываем.

А вообще, странно, что так медленно.

Eddy_Em ☆☆☆☆☆
()

По сети? 160 гигов? Ну сутки будет копировать, мб больше. Хочешь быстро - езжай к удаленному компу, выдергивай винт и тащи его к себе.

Zhbert ★★★★★
()
Ответ на: комментарий от I00matolog

хотят тут наверно долго изза мелкого размера файла

I00matolog
() автор топика
Ответ на: комментарий от I00matolog

На файл-сервере запаковываете, но выхлоп gzip'а идет не в файл, а по ssh туда, куда надо это скопировать. Там, соответственно, на выходе трубы распаковывается. Недостаток: если сеть накроется, придется все копировать снова.

Eddy_Em ☆☆☆☆☆
()

Ты упоротый? Я тебе уже говорил копируй на уровне блочного устройства (drbd) или lvm-snapshot + ssh + dd или (лоровские задроты считают что LVM-ненужен) делай dd + ssh + fsck

anonymous
()
Ответ на: комментарий от I00matolog

Не шлангуй. drbd был предложен в теме «каждые 15 минут синхронизировать >250 миллионов файлов»

Здесь же:

1. lvm-snapshot --> dd | ssh dd

2. нет LVM --> dd | ssh dd; fsck

anonymous
()
Ответ на: комментарий от anonymous

Ему не нужно копировать раздел целиком. Да и от этого есть смысл, лишь в случае, когда раздел почти полностью забит. А во всех остальных случаях лучше всего - tar over ssh.

Eddy_Em ☆☆☆☆☆
()

> через нфс.

Насколько мне известно, nfs работает через udp, то есть у тебя нет гарантии что все файлы доехали корректно. На сеть другой нагрузки в это время не было?

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Насколько мне известно, nfs работает через udp, то есть у тебя нет гарантии что все файлы доехали корректно.

Гарантия есть: либо файлы доехали корректно, либо не доехали.

Deleted
()
Ответ на: комментарий от Deleted

Если при передаче одного файла в середине было потеряно несколько пакетов, то как об этом узнает команда cp?

sin_a ★★★★★
()
Ответ на: комментарий от Eddy_Em

Ему не нужно копировать раздел целиком.

В случае с мелкими файлами копирование раздела целиком может оказаться быстрее копирования всех файлов по отдельности. Чтобы не копировать незанятые места раздела, можно вместо dd использовать partclone или partimage. Но проделывать такие фокусы нужно с отмонтированным разделом, иначе ФС может перенестись битой.

Deleted
()
Ответ на: комментарий от sin_a

Если при передаче одного файла в середине было потеряно несколько пакетов, то как об этом узнает команда cp?

Команда cp об этом узнает от соответствующего системного вызова, системный вызов от VFS, VFS от драйвера NFS, а драйвер NFS узнает о потере из пропущенных номеров пакетов или неправильной контрольной суммы (я не знаю точно какой именно там способ, но он однозначно есть).

И вообще, TCP тоже работает поверх «ненадёжного» протокола IP, но целостность потока там тем не менее гарантируется =).

Deleted
()
Ответ на: комментарий от Eddy_Em

Неверное планирование не освобождает от титула «дебил». Проекты с таким кол-вом файлов не распологают в директории на /, впрочем ЛОРовская школота с криками «LVM не нужен» и «достаточно / и /home» может теперь жевать свои мозоли.

А ты сначала подумай сколько времени займет просто прочитать с диска ~150.000.000 метаданных файлов, а потом и сами файлы — время копирования по сети можно будет не учитывать.

anonymous
()
Ответ на: комментарий от sin_a

Уже пару-тройку лет по умолчанию nfs в линуксе через tcp.

А так, udp пакет имеет аналогичную tcp контрольную сумму, а повторную передачу пакетов организовывал уже сам nfs. Не помню, чтобы у меня были проблемы с передачей файлов по nfs по udp по 10 Мбит коксиальному кабелю.

mky ★★★★★
()

>Быстро перенести

libastral.so, быстро, решительно.

slackwarrior ★★★★★
()
Ответ на: комментарий от anonymous

Плюсую за dd, ему пофиг на фс, будет копировать одним потоком.

лоровские задроты считают что LVM-ненужен

Неправда, LVM нужен! :)

Dimka-Bo
()

time purkeent

>Быстро перенести(скопировать) мегадиректорию

Камаз болванок же! Терабайты в секунду...

anonymous
()

Сеть то хотя бы гигабитная?

А вобще, ИМХО, такой объем по сети лучше копировать кусками, чтобы с случае обрыва связи знать какие куски перекопировать заново, например, запускать отдельно последовательно копирование по каталогам верхнего уровня. И сначала проверить скорость nfs копированием достаточно большого файла (~500 Мбайт).

Кстати, LVM-снапшот можно как то копировать кусками?

mky ★★★★★
()
Ответ на: комментарий от sin_a

> Если при передаче одного файла в середине было потеряно несколько

пакетов, то как об этом узнает команда cp?


Это - задача NFS.

AS ★★★★★
()
Ответ на: комментарий от anonymous

Да, в этом направлении я и думал. А то мне надо будет 850 Гб по 100 Мбит сетке слить.

mky ★★★★★
()

Дык файлы там небось текстовые. Может таки запаковать банально и передать, а там распаковать?

sergeiconq
()
Ответ на: комментарий от Eddy_Em

если сеть накроется, придется все копировать снова.

rsync -Pavzr from to:path

beastie ★★★★★
()

tar -c foldername | nc -l -p 8888

nc serveraddres 8888 | tar -x

для мелких файлов ничего лучше не придумать

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

gzip

и gzip -dc

в пайп ставить по вкусу, в зависимости от ожидания сжимаемости траффика и скорости сети. т.к. сжиматься будет поток, а не индивидуальные мелкие файлы, то влияния на скорость копирования практически быть не должно, gzip быстрый )

Sylvia ★★★★★
()
Ответ на: комментарий от baaba

или старое доброе dd, и то же нужна компрессия на лету. потом подмонтировать img, вот такие тупые варианты

baaba ★★★
()
Ответ на: комментарий от partyzan

Да он быстрее DVD-RW'шками бы перетаскал :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от I00matolog

на источнике

tar -c . | gzip | nc -l -p 9999

упаковываем текущий каталог, пакуем поток gzip, nc (netcat) будет слушать на порту 9999


на приемнике

nc serveraddress 9999 | gzip -dc | tar -x

соединяемся к serveraddress порт 9999 , расжимаем gzip, распаковываем tar

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

преимущество tar в том, что все транзакции с файлами будут сделаны локально, без задержек на передачу пакетов по сети, для множества мелких файлов это очень значимо

Sylvia ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.