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

Копирование-перенос файлов между разными аккаунтами #55

Closed
Corak667 opened this issue Oct 23, 2016 · 12 comments
Assignees

Comments

@Corak667
Copy link

Corak667 commented Oct 23, 2016

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

@Corak667 Corak667 changed the title Копирование-перенос файлов между аккаунтами Копирование-перенос файлов между разными аккаунтами Oct 23, 2016
@pozitronik pozitronik self-assigned this Oct 23, 2016
@pozitronik pozitronik added the bug label Oct 23, 2016
@pozitronik
Copy link
Owner

Подтверждаю, копирование между аккаунтами не работает. Это довольно странно, я тестировал этот функционал.
Что касается переноса расшаренных каталогов - нужно посмотреть, есть ли подходящий метод в API.

@pozitronik
Copy link
Owner

Копирования между аккаунтами не будет, и я напрямую запретил такое поведение в коде.
Вообще TC умеет распознавать случаи, когда операции проводятся между разными удалёнными ФС (например, разными FTP), и проводить копирование/перемещение через локальную ФС. В случае файлсистемных плагинов проблема в том, что для TC любой такой плагин - одна цельная файловая система. То, что в плагине представлено разными аккаунтами - это всего лишь каталоги первого уровня в представлении TC, так что локальный буфер не подключается.
Реализовать такое распознавание внутри плагина можно, но я не вижу смысла это делать: гораздо проще и правильнее будет пользователю самому проводить копирование в два этапа.

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

@Corak667
Copy link
Author

Corak667 commented Nov 5, 2016

Спасибо) Нечто подобное подозревал, поэтому и предложил вариант про копирование через шару. Ок тогда, остается только ждать его.

@pozitronik pozitronik removed the bug label Nov 7, 2016
@pozitronik
Copy link
Owner

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

clone https://cloud.mail.ru/public/BhXc/x4RjZVVK5

Содержимое публичной ссылки сохранится в текущий каталог.

Пока так. Копирование через временную шару - дело времени.

@Corak667
Copy link
Author

Corak667 commented Nov 7, 2016

Подтверждаю. Работает отлично:
http://i.imgur.com/I6iMKYK.png
Отличная новость! Спасибо! Буду ждать полноценного копирования между аккаунтами.
Фактически уже сейчас можно копировать копипастом и комстрокой. Alt+Enter,разрешить ссыль,скопировать ссыль ctrl+c на папке источнике и clone $ctrl+v$ в ком строке на целевой.
Единственный случай, когда копирование будет неудобно - если файлы или группа папок будут находится в корневом каталоге облака, тогда придется делать шару для каждого из них отдельно.

@Corak667
Copy link
Author

Corak667 commented Nov 7, 2016

А как в дальнейшем планируется это реализовать? Открывать шару для каждого файла из списка копируемых? Вроде как я слышал - там есть лимит на количество открытых ссылок (1500) - более старые при этом закрываются. Так что имеет смысл отключать временную ссылку по результату копирования, чтобы не повредить какие-то официальные опубликованные где-то ссылки.
https://help.mail.ru/cloud_web/confines

@pozitronik
Copy link
Owner

Что-то вроде такого:
if (public_url_exists) {
clone(public_url,new_path);
} else {
public_url = create_pulbic_url(old_path);
clone(public_url,new_path);
remove_public_url(old_path);
}

@pozitronik
Copy link
Owner

pozitronik commented Nov 8, 2016

Реализована поддержка копирования/перемещения между аккаунтами через публичные ссылки (см. код).
Поддержка таких операций должна быть включена в настройках.

Замечания:

  1. TC пытается проводить операцию над каждым файлом в отдельности, после каждой итерации вызывая перечитывание структуры каталогов (это, вроде бы, настраивается). Это долго и накладно, поэтому для быстрого копирования рекомендуется использовать clone.
  2. По той же причине проводимую операцию невозможно отменить, но над этим я ещё постараюсь поработать).

@Corak667
Copy link
Author

Corak667 commented Nov 8, 2016

Проверил, да, отлично работает, хоть и очень медленно)

@pozitronik
Copy link
Owner

pozitronik commented Nov 8, 2016

Проверил, да, отлично работает, хоть и очень медленно)

См. #62

@pozitronik
Copy link
Owner

commit 073072b
Добавил возможность отмены операции по нажатию Cancel

@Corak667
Copy link
Author

Corak667 commented Nov 9, 2016

Да, отмена по Cancel работает, подтверждаю.

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

2 participants