LINUX.ORG.RU
ФорумMobile

Полноценная синхронизация фото/видео файлов между android и своим сервером в 2016 году

 , , , ,


1

2

День добрый.

Решил я наконец-то сделать себе «персональное облако». На телефоне мне внезапно стало катастрофически не хватать места, т.к. из 30 ГБ половину уже стали занимать фото/видео. Поэтому подумал что надо их куда-то перенести и сохранить, лишнее на телефоне удалить.

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

Поставил на домашний сервер seafile. Тут выясняется что android клиент у него — это не полноценный клиент, не может сам отслеживать изменения, надо вручную отсылать и забирать их. Дальше внезапно выясняется что он ещё и не отправляет дату создания/модификации файла.

https://github.com/haiwen/seadroid/issues/91

https://github.com/haiwen/seadroid/issues/330

https://github.com/haiwen/seafile/issues/1456

Это может и не так критично для фото, т.к. есть exif, но для видео файлов важно. Т.е. если я выгружу файлы, удалю их на телефоне, и при необходимости заберу обратно, как минимум стандартная галерея мне их неправильно рассортирует. Ну и вообще, неправильно это.

Начал искать дальше. Выясняется, что та же ситуация с owncloud.

https://github.com/owncloud/android/issues/761

Решил глянуть что по этой проблеме с проприетарщиной. Быстрый поиск по dropbox выдал тему, где человек пишет о той же проблеме.

http://forums.androidcentral.com/ask-question/577636-dropbox-date-stamps-my-p...

Кто-нибудь знает какое-то рабочее решение? Хочу синхронизацию фоток/видео на свой сервер без потери даты создания.

В owncloud (nextcloud) есть возможность автоматической загрузки фото и видео.

sin_a ★★★★★ ()

Кто-нибудь знает какое-то рабочее решение?

Я для себя реализовал так.

Коммуникатор синкается с домашним сервером по btsync. Ибо это сегодня самый безглючный и лёгкий клиент под Android среди подобных систем. Отслеживаются изменения в две стороны, дата сохраняется. Единственный минус — нет версионности никакой.

Вот тут вступает в игру второй эшелон. Домашний сервер синкает всю фотоколлекцию с домашним бэкап-сервером и внешним сервером через syncthing. Также, через syncthing ещё синкаются каталоги последнего года и «входящий несортированный» (DCIM) с рабочими машинами (домашней и на работе) и ноутом. Синкается с версионным бэкапом на каждой машине.

Т.е. делаю я фотку на коммуникаторе, она тут же падает на домашний сервер в Collection/Unsorted/DCIM. Потом, если нужно, на любой из машин, где сижу, привожу в порядок, изменения синхронизируются по всей моей инфраструктуре.

KRoN73 ★★★★★ ()

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

Так фотки/видео он как раз и умеет синхронизировать.

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

А дата сохраняется там? В seafile тоже есть такая опция, но меня это не устроило. Моя камера не позволяет задать шаблон имени файла, поэтому я для этого использую отдельное приложение, которое переименовывает всё как надо. И потом хотел уже делать выгрузку вручную.

orm-i-auga ★★★★★ ()
Ответ на: комментарий от KRoN73

Ок, надо глянуть на btsync. Но у меня исходная задача была ещё и высвободить место. Т.е. я выгружаю особо тяжелые файлы и удаляю на телефоне, если нужно — загружаю обратно. Тот факт что seafile и ownlcoud (судя по всему) не являются полноценными клиентами, мог позволить мне выгрузить файл, затем удалить его без отправки удаления на сервер.

В btsync я так понимаю если удалю файл на android, он везде удалится?

UPD А, понял, т.е. у тебя на телефоне всегда только unsorted коллекция, а полный вариант лишь на сервере?

orm-i-auga ★★★★★ ()
Последнее исправление: orm-i-auga (всего исправлений: 1)

Почему просто не использовать sshfs? Тот же solid explorer прекрасно справляется с этим.

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

Ещё не понял, зачем в такой схеме нужен syncthing, для версионности?

orm-i-auga ★★★★★ ()
Ответ на: комментарий от Deleted

Копировать и удалять, да и синхронизировать с андроидом вручную же придется.

orm-i-auga ★★★★★ ()

Посмотрите в сторону приложения для андроидов foldersync.

Ftp, scp, облака - вариантов у программа тьма. И шедулинг есть разумеется.

Deleted ()
Последнее исправление: Rainor (всего исправлений: 1)
Ответ на: комментарий от orm-i-auga

В btsync я так понимаю если удалю файл на android, он везде удалится?

Да. Но останется в версионном бэкапе («корзине», если будет включена соответствующая настройка).

UPD А, понял, т.е. у тебя на телефоне всегда только unsorted коллекция, а полный вариант лишь на сервере?

И так, и эдак. В DCIM/OpenCamera — свежие несортированные фотки. Но есть и сортированные отобранные — синхронизируется тем же btsync, но с другим подкаталогом на сервере. Т.е. я часто привожу в порядок фотки на сервере, коллекция на коммуникаторе приходит в тот вид, какой задаю на сервере же.

KRoN73 ★★★★★ ()
Ответ на: комментарий от orm-i-auga

Ещё не понял, зачем в такой схеме нужен syncthing, для версионности?

Да. Другого инструмента для синхронизации с версионностью я пока не нашёл. btsync умеет только сохранять удалённый файл.

KRoN73 ★★★★★ ()
Ответ на: комментарий от orm-i-auga

Дата должна быть в имени файла, у меня смарт так по дефолту снимает. Тогда никаких заморочек с сортировкой. Есть скрипты, переименовывающие так по exif.

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

Дата в имени это же больше подсказка для человека. Тут ведь не только сортировка, но и группировка. С фотками ещё более менее всё хорошо, т.к. exif. Скажем, надо посмотреть все видео за 2016 год. Не знаю, есть ли галереи, парсящие дату из имени файла, да и если есть — это ненадёжно. Но точно есть которые могут группировать по дате создания файла.

orm-i-auga ★★★★★ ()
Ответ на: комментарий от Deleted

+1 к FolderSync. Я его использую совместно с ownCloud. Потому что родной клиент - говно (по крайней мере, раньше было так).

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

Решение закрытое и платное, если ничто другое не устроит надо будет попробовать.

orm-i-auga ★★★★★ ()

Ок, посмотрел я на syncthing, поставил, потестировал. Судя по всему — мне подходит. Сделал 3 директории: Images, Video, Unsorted Media. Unsorted Media замапил на директорию куда камера сохраняет фото/видео. Для всех директорий отключил версионность на андроиде и включил на сервере.

Для Images и Video на сервере задал опцию ignoreDelete: https://docs.syncthing.net/advanced/folder-ignoredelete.html. Теперь на андроиде я могу удалять тяжелые файлы из этих двух коллекций, но на сервер удаление не уйдёт.

Ну и весь процесс теперь получается такой, фоткаю-снимаю что нужно, оно сохраняется в Unsorted Media и уходит на сервер. Либо с телефона, либо ещё откуда выбираю что удалить или оставить, переименовываю как нужно и переношу в Images и Video, а из Unsorted Media удаляю.

Таким образом я и свободное место на андроиде могу регулировать, и нужные данные всегда целые и синхронизированные на сервере. Сейчас как раз пошёл процесс выгрузки всех данных на сервер.

Остался лишь один неудобный момент. Если я удалил тяжелый файл из Video на андроиде (а на сервере он целый) и вдруг решил снова его загрузить на телефон, как форсировать его загрузку с серверной директории Video? Я пока лишь вижу вариант с перезаписью этого файла на сервере, в этом случае клиент увидит это и перекачает его. Но тогда и дата изменения поменяется, что не очень хорошо. KRoN73, Reedych, т.к. вы писали здесь про syncthing, не в курсе как это решить?

orm-i-auga ★★★★★ ()
Ответ на: комментарий от orm-i-auga

Я попробовала бы обновить индекс файлов в директории типо, но хз

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