Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ограничение в 2Гб #13

Closed
pozitronik opened this issue Aug 2, 2016 · 9 comments
Closed

Ограничение в 2Гб #13

pozitronik opened this issue Aug 2, 2016 · 9 comments
Assignees
Milestone

Comments

@pozitronik
Copy link
Owner

Нужно проверить, есть ли ограничение на размер одного файла в 2Гб, и можно ли от него избавиться.

@pozitronik pozitronik self-assigned this Aug 2, 2016
@Tw0l4nd
Copy link

Tw0l4nd commented Aug 4, 2016

Такое ограничение есть: скриншот
Неплохо было бы иметь возможность на лету разбивать на части и на лету собирать воедино при загрузке...

@codestudioua
Copy link

codestudioua commented Aug 6, 2016

Даже в официальной программе Cloud Mail.ru на free-аккаунтах такое ограничение есть :(
Очень полезная и нужная функция, но боюсь, что не доступна.
Вариант Tw0l4nd очень даже ничего — на лету разбивать файлы по 2GB, а в облаке обратно собирать. Только фот есть ли возможность их собирать в обалке?

@pozitronik
Copy link
Owner Author

Проверка показала, что ограничение есть, более того - оно было захардкожено ещё при реализации API. Начиная с коммита b3b8f84 клиентская проверка может быть отключена, но проверка на сервере останется.
Нужно ли делать разбитие файлов на лету - не знаю, возможно лучше заранее сделать это в Total Commander.

@codestudioua
Copy link

Вопрос не в том, что это возможно сделать на клиенте, а в том, чтоб можно было собрать на сервере в единый файл и не задумываться при этом о размере. Также, насколько мне известно с сервера нет возможности скачать больше 2GB. А имея 1ТБ и учитывая, что размеры файлов все время «растут» - опция разбить/собрать была бы очень актуальна.

@pozitronik
Copy link
Owner Author

Я прекрасно понимаю, о чём меня просят, это ещё обдумывается. Речь шла о других немного вещах.

@pozitronik
Copy link
Owner Author

Просто идея по алгоритму работы с большими файлами.

  • При закачке файлы большого размера разбивать ровно по тому же принципу, как в Total Commander: файлы частей будут иметь имя filename.part_number, рядом с ними будет filename.crc, содержащий оригинальное имя файла, размер, и контрольную сумму. Это позволит добиться совместимости, в случае, если последующая загрузка будет проводиться другим клиентом.
  • При работе с ФС облака представлять разбитые файлы as-is (как сейчас), или "виртуализированно" - вместо файловых частей на уровне пользователя будет отображаться исходный файл. При этом придётся писать всю обвязку виртуализации и кучу проверок.
    Не знаю, насколько это востребовано.

@pozitronik
Copy link
Owner Author

pozitronik commented Aug 21, 2016

Окончательно поправлена заливка больших файлов в коммите 4b9a2c5

@pozitronik
Copy link
Owner Author

Во время исследований выяснилось, что граница лимита установлена не в двоичных, а в десятичных единицах, т.е. составляет 2000000000 байт, а не 2147483648.

@pozitronik pozitronik added this to the next release milestone Aug 24, 2016
@pozitronik
Copy link
Owner Author

pozitronik commented Aug 25, 2016

Done at commit 94783d9

При закачке файлы больше чем 2000000000 байт опционально разбиваются на части ровно по тому же алгоритму, что в Total Commander: файлы частей имеют имя filename.part_number, рядом с ними генерируется filename.crc, содержащий оригинальное имя файла, размер, и контрольную сумму.

Разбитие файла происходит непосредственно перед копированием в подкаталог %temp%, прогресс никак не отображается.
Отмена операции или ошибка в её процессе останавливает заливку, но не удаляет уже залитые части файлов.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants