1

Тема: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

Довольно  часто необходимо делать резервное копирования больших файлов по 1Gb - 4Gb, файлы эти являются файловыми контейнерами TrueCrypt, при работе с которыми они изменяются лишь немного, поетому не хочется постоянно копировать весь файл, это занимает не мало времени.
В статье на хабре узнал что в облачном сервисе DropBox используется синхронизация файла более 16мб блоками, там что бы не заливать большие файлы полностью, они сначала сравниваются блоками по 4 мб, в итоге передаются только те части файла которые были изменены, что существенно экономит время и трафик.

Возможно ли реализовать на AHK/CMD подобную программу для синхронизации(резервного копирования) больших файлов отдельными частями, блоками по 4 мб?
Надо для синхронизации  между ПК и флешкой, а если возможно то и по локальной сети или беспроводной сети WiFi по FTP протоколу.

К примеру предлагаемый скрипт на AHK будет считывать часть файла оригинала в шестнадцатиричном формате например также по 1 или 4 мб, после по тому же адресу ту же часть файла на флешке, далее сравнивать их, если есть отличия, то перезаписывать часть файла на флешке, если нету, то пропускать, и так далее до конца файла. После выдавать информацию где и сколько блоков, а также мегабайт в целом было изменено.

Будет ли смысл в такой программе, ведь оба файла по сути надо будет перечитать в оперативную память частями по 4 мб?

Если нет, то какую альтернативную программу с описанными функциями можете посоветовать?
Пробовал Syncthing и BitTorrent Sync, но они немного не подходят, а Syncthing и вообще сырая, как я понял они больше расчитаны для синхронизации по сети для корпоративов.
Также есть похожий функционал в программе Syncovery, но не удается настроить для синхронизации отдельного файла, плюс она только на английском языке.

2

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

Возможно это как-то поможет для начала.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3 (изменено: avens, 2014-12-16 15:01:53)

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

oFile := FileOpen(fileName, "a"), oFile.Length := 0

Этой функцией можно загружать определенную часть файла по установленному адресу?

4

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

Скорее всего по скорости, простоте и надёжности выиграет тупо копирование на флешку / внешний жёсткий.

5

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

К чему авторизация на сайтах... к моей задаче?

Пример скачивания файла частями, ни к чему?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: avens, 2014-12-16 15:07:02)

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

ypppu пишет:

Скорее всего по скорости, простоте и надёжности выиграет тупо копирование на флешку / внешний жёсткий.

Но ведь есть же программы которые синхронизируют только изменившиеся части файлов, та же Syncovery к примеру..
Как они тогда сравнивают, ведь если бы не было скорей, то не делали бы такой функции?

7

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

serzh82saratov пишет:

К чему авторизация на сайтах... к моей задаче?

Пример скачивания файла частями, ни к чему?

Уже исправил свой ответ, просто сразу не заметил к чему это
Пока что вопрос стоит в том, стоит ли делать такой скрипт и будет ли он оправдан по скорости и нагрузке системы.
Хотелось бы узнать прежде чем писать что то.

8

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

Этой функцией можно загружать определенную часть файла по установленному адресу?

Нет. Но как Вы сказали, это пока неважно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

avens пишет:

Но ведь есть же программы которые синхронизируют только изменившиеся части файлов, та же Syncovery к примеру..
Как они тогда сравнивают, ведь если бы не было скорей, то не делали бы такой функции?

Как они работают и какова их надёжность - не знаю. Догадываюсь, что они в течение продолжительного времени перелопачивают большие файлы, после чего выявляют изменения. Лопатить флешку или файл по Wi-Fi, тем более лежащий на FTP... Как говорит мой знакомый - "картошку по телефону перебирать".

Долгий и сомнительный алгоритм. Проще создавать некую метку, в которой будет информация о "свежести" файла. Самое простое - сравнить дату последнего изменения и размер файла.

10 (изменено: serzh82saratov, 2014-12-16 15:54:00)

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

По моему проще на FTP хранить список с хешем файлов. Сравнивать их. Если есть изменения, то переписать весь файл, ввести новый хеш в список. Зачем частями, если всё равно перелопачивать весь файл по частям, экономии трафика всё равно никакой, а времени больше.

Но ведь есть же программы которые синхронизируют только изменившиеся части файлов

Возможно они создают хеши частей файла.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: Irbis, 2014-12-16 16:09:05)

Re: AHK: Синхронизация больших файлов отдельными частями блоками между ПК

В чистом виде "на лету" анализировать содержимое большого (~4Гб) файла на флешке, по времени выйдет не меньше, чем просто копирование. Можно предварительно подсчитать хеш блоков по несколько мегабайт, хотя опять же его придется где-то хранить - или в отдельном файле, или в альтернативном потоке NTFS. Перед копированием нужно у новой версии файла на жестком диске считать хеш-суммы, и заменять на флешке те блоки, у которых суммы не совпадают.
В таком случае объект File может быть полезен, да. Но тут слишком много нюансов, которые могут перевесить все "плюсы" такого подхода.

Upd: serzh82saratov опередил мою мысль. ))