[Solved для Samba] "надежное" копирование по сети

необходим механизм копирования больших (десятки ГБ) файлов по сети с учетом обрывов в этой самой сети (воздух n-диапазона) - какую-нибудь cli утилитку, которая ожидает восстановления связи и прет дальше. самостоятельно найти удалось только под оффтопик.

wget, опция --tries

wget, опция --tries

Не грусти, товарищ! Всё хорошо, beautiful good!

-c еще

-c еще

это я знаю, но wget только

это я знаю, но wget только http/ftp умеет afaik

сеть бывает разной, по какомц

сеть бывает разной, по какому протоколу передавать собираетесь?

semlanik написал(а): сеть

semlanik написал(а):
сеть бывает разной, по какому протоколу передавать собираетесь?

UDP :D

хотелось бы что-нить

хотелось бы что-нить протоколо-независимое. то есть я монтирую (samba, NFS etc) и копирую.
типа reliablecp /mnt/netshare/file /path

Ну самба с НФС тоже как бы

Ну самба с НФС тоже как бы протоколы для передачи данных используют ) это меня как раз и интересовало. Ну для NFS знаю фичу что оно само поднимает коннект после отвала, т.е. смотированая шара после поднятия сети, подцепится сама. Отсюда вывод что можно написать простенький скрипт копирования. А вот насчет самбы ничего посоветовать не могу...

ну хотелось бы более-менее

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

rsync -c плюс --bwlimit плюс

rsync -c
плюс --bwlimit плюс --timeout

ну это к созданию скрипта

ну это к созданию скрипта полезно. а неужели подобная проблема ранее не ставилась/решалась?

От чего же не

От чего же не ставилась/решалась? И ставилась, и решена. Торрент как комплексное решение (Докачка, расчет контрольных сумм и все такое. ), wget опять же. Насколько в курсе, rsync поддерживает докачку (http://surrender-zen-way.blogspot.com/2009/05/rsync-ssh.html), можно использовать его. По приведенной ссылке описано как все это завернуть в туннель, ежели вас беспокоит безопасность соединения.

Вся проблема в том, что вы по каким либо причинам не желаете, или не имеете возможности этим пользоваться. На мой взгляд проще всего на источнике поднять фтп, и организовать расчет контрольной суммы. На приемнике wget завернуть в скрипт с контролем суммы. Строк пять кода.

Ну разумеется я не желаю это

Ну разумеется я не желаю это делать неправильно. Т.е. создавать лишние сущности вроде FTP/HTTP серверов, торрент-клиентов. Задача-то простая и предполагается что я могу стандартными средствами системы, например cp, скопировать файл.. необходим враппер-функционал который отслеживает обрыв и возобновляет трансфер.

Кроме того, хотелось бы эту задачу решить не "для данного конкретного случая" - в конкретном случае проще и быстрее перенести на флэшке, диске нежели поднимать сервисы ТОЛЬКО ДЛЯ ДАННОЙ ЗАДАЧИ - что категорически неправильно. И еще раз кроме того - вовсе не предполагается, что есть права рута "на том конце". Все, что есть - это доступ к шаре.

как я писал в постах ниже - докачка rsync работает как "перекачка" (может это только в моем случае). Если у Вас реально докачивает - плз поделитесь опытом, буду весьма благодарен.

?

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

не изменилось modification

не изменились modification time и размер например. Это не гарантия но приемлемое соглашение.
wget надо полагать примерно так и определяет?

если теоретически - то задача

если теоретически - то задача мне видится так (я не программировал в Linux но думаю в данном случае платформа не важна)
если
1)дескриптор, возвращаемый функцией OpenFile (для стороннего файла), поддерживает операцию Seek
и
2)поддерживается получение размера и времени модификации (для стороннего файла)
то после срабатывания таймаута заново открываем файл делаем Seek и дописываем
ну возможно придется после обрыва перемонтировать но это уже детали

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

попробовал rsync с -P и

попробовал rsync с -P и --partial-dir - все равно копирование начинается сначала. Вот засада - как же файл-то скопировать? )

если это один большой файл -

если это один большой файл - то wget'ом получше будет

а как wget'ом мне с самбы

а как wget'ом мне с самбы скопировать?

Beelzebubbie

Beelzebubbie написал(а):
попробовал rsync с -P и --partial-dir - все равно копирование начинается сначала.

Как Вы это определили?

начал копировать подождал до

начал копировать подождал до пары гигов, оборвал. Файл остался. Еще раз повторил команду, опять прервал. В результате получилось меньше 2 гигов. Значит не продолжилось (
конкретно команды такие были
mount //host/share /mnt/netshare
rsync -vP --partial-dir=/somedir/.rsync-partial --bwlimit=6000 /mnt/netshare/myfile /destpath

Цитата: --inplace

Цитата:
--inplace
This option changes how rsync transfers a file when the file's data needs to
be updated: instead of the default method of creating a new copy of the file
and moving it into place when it is complete, rsync instead writes the
updated data directly to the destination file.

А partial-dir добавит дисковых операций и только, т.к. будет гонять файлы из одной диры в другую при окончании докачки, ИМХО. Однако:

Цитата:
--partial
By default, rsync will delete any partially transferred file if the transfer
is interrupted. In some circumstances it is more desirable to keep partially
transferred files. Using the --partial option tells rsync to keep the par-
tial file which should make a subsequent transfer of the rest of the file
much faster.

И, что важно:

Цитата:
--partial-dir does not imply --partial.

про partial-dir согласен, это

про partial-dir согласен, это уже от безысходности )
inplace ситуацию не меняет. То есть при повторном запуске с -vP --inplace запись в имеющийся файл происходит с его начала (файл начинает расти только после того, как будет записан его старый размер)

...вопрос пока остается открытым ....

Как бы, из мана следует, что

Как бы, из мана следует, что --partial очень нужен, при нём должна быть докачка. А иначе: By default, rsync will delete any partially transferred file if the transfer is interrupted.

в мане: -P == --partial

в мане: -P == --partial --progress

Так сверкой блоков будет

Так сверкой блоков будет заниматься сама nfs. На время обрыва соединения процесс копирования будет "замораживаться", потом продолжать дальше.

в общем-то да. в таком случае

в общем-то да. в таком случае задача сводится к rsync с таймаутом + (восстановление монтировки) + продолжение копирования с места обрыва.
вот с продолжением у меня пока не выходит.

наткнулся тут на няшечку

наткнулся тут на няшечку smbget -rqn smb://server/share/data

SOLVED

вот оно! спасибо доброму и компетентному человеку ))

...
Trying to start resume of Catch.mkv at 35262910976
At the moment 35262911488 of 45997441364 bytes have been retrieved
Current local and remote file appear to be the same. Starting download from offset 35262910464
...

.

Для smb нашли. А как для остальных?
Почему когда речь шла о wget, то [SOLVED для HTTP,FTP] не появилось?
И неужели на этом всё закончится, когда просили ...

Цитата:
хотелось бы что-нить протоколо-независимое. то есть я монтирую (samba, NFS etc) и копирую.

? Опять победил офтопик!? Дальнейшей поиск истины умрет?

Лучше бы тогда изменить название на
[Solved] "надежное" копирование по сети для Samba

да, я не совсем корректно

да, я не совсем корректно поставил вопрос - потому что я не знаю правильной формулировки.

wget как докачка для HTTP, FTP - вещь имхо общеизвестная, да и нагуглить кто не знает - пара секунд поэтому таким углом я вопрос и не ставил.

Где-то в этих постах я уже отметил, что мой вопрос был - "надежное копирование для всего, что можно смонтировать и скопировать командой cp" - каким словом это объединить? Разумеется, для локально подключаемых ФС такой вопрос ставиться не должен в принципе, может быть это NFS как "Сетевые Файловые Системы"? )))
Я не придумал формулировки, к которой нельзя было бы придраться )

Посоветуйте, как правильно - исправлю. Посоветуете метод не только для самбы - будет вообще замечательно. Еще один момент - если писать самому универсальный скрипт то нужно учитывать тот факт, что Samba нуждается в перемонтировании после обрыва связи. Как этот вопрос обстоит с другими "NFS" - я не знаю.

Beelzebubbie написал(а): Как

Beelzebubbie написал(а):
Как этот вопрос обстоит с другими "NFS" - я не знаю.

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

Но NFS почему-то не подошёл?!

Поднятие сервисов, отличных от Samba и NFS отметалось сразу. Хотя именно они для этого подходят лучше всего (проектировались в расчёте на плохие линии связи).

То что "победила самба" меня не удивляет.

я "NFS" употребил как

я "NFS" употребил как собирательное определение для "Сетевые Файловые Системы" поэтому и кавычки поставил. Среда дома гетерогенная (win, linux) поэтому разумеется самба и победила.
Поднятие других сервисов? На всех участниках сети? Это по сути дела будет дублирование не более. Можно конечно еще проще решить - купить действительно достойное сетевое оборудование итд.
Есть же у нас команда cp - достаточно абстрагированная от ФС и Сетевых ФС. Все, что в данном случае надо - это дополнить ее функционал (а не сужать путем использования ФС-специфичных функций)
В общем, я за ООП и "черные ящики" в данном случае )

Я тут хотел нарезать коммент

Я тут хотел нарезать коммент с ворчанием, но не получилось
поэтому скажу лишь, что самба победила по хомячковости задачи и не желанию думать
.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

а предполагается, что на

а предполагается, что на любом Win компе уже стоит SFU?
Или, более того, предлагается устанавливать поддержку NFS _только для этой задачи_? )))
Кроме того, на xp home sfu afaik не ставится а бесплатных NFS клиентов я еще года 3 назад искал - других не было.
Или такая ситуация - пришел сосед с рабочим ноутом, фильмы принес. А права у него тока юзера - как тогда?

Так что хомячковость здесь отсутствует. Сначала БГ убедите чтобы NFS клиент "искаропки" стоял )

Я не спорю, что NFS во многих отношениях лучше Samba, однако напомню про Ethernet и VHS vs сами знаете что.
Самба победила только потому, что она, в отличие от всего остального, почти везде уже есть.

в данном случае (на скрине),

в данном случае (на скрине), я никакой SFU не ставил :)

 Сначала БГ убедите чтобы NFS клиент "искаропки" стоял )

Убедил - уже стоит. с переходом на Генту выкинул самбу, кому надо - тот и мучается :)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Цитата: в данном случае (на

Цитата:
в данном случае (на скрине), я никакой SFU не ставил

потому что это server

Цитата:
Убедил - уже стоит.

Это у Вас стоит и это более исключение, нежели правило. Как бы там ни было, самбу поддерживает большинство участников сети и этот факт не стоит игнорировать.

Можно и по-другому: если для решения вопроса не требуется привлечения лишних сущностей, то привлекать их - _неправильное_ решение вопроса.

если вернуться к теме вопроса

если вернуться к теме вопроса - я ставил задачу не относительно samba, NFS или чего-то еще. На данный момент удовлетворительного решения задачи не обнаружено, поскольку:
- NFS: см выше
- Samba: после отвала сети нужно повторить mount, что невозможно сделать без указания учетных данных (поправьте, если ошибаюсь)
smbget - частное решение, кроме того, как показала практика, не всегда надежно отрабатывает таймаут

dd + скрипты и творите, что

dd + скрипты и творите, что хотите. )

поясните плз - как dd здесь

поясните плз - как dd здесь поможет?

dd позволяет копировать

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

хм.. похоже, так и есть, skip

хм.. похоже, так и есть, skip и seek - это то, что надо. Осталось только победить отвал монтировки и проблема будет решена вполне правильным образом.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".