Любой хоть раз задумывался как быстро сделать копию телефона или отдельной папки, или файла. Или наоборот залить файлы на телефон. Сейчас мы вам расскажем как легко и быстро передавать файлы любого вида с вашего устройства на компьютер с Linux и обратно.
Один из главных недостатков мобильных устройств заключается в том, насколько сложно может быть передача данных с вашего устройства на компьютер. Мобильные устройства имеют долгую историю этого. Ранние мобильные устройства, такие как устройства Pilot и Handspring PDA, требовали специальное программное обеспечение для синхронизации. Старым iPod требовался интерфейс для конкретной платформы. Современные мобильные устройства по умолчанию отправляют ваши данные в онлайн-аккаунт, поэтому вы можете загрузить их на свой компьютер.
Хорошие новости — если вы работаете в Linux, вы, вероятно, можете подключиться к мобильному устройству с помощью gphoto2. Изначально разработанный как способ связи с цифровыми камерами, когда цифровая камера была просто камерой, gphoto2 теперь может общаться со многими различными видами мобильных устройств.
- Установить gPhoto2
- На Fedora или RHEL
- На Debian или Ubuntu
- Проверка на совместимость gPhoto2 с вашим устройством
- Найди свое мобильное устройство
- Опросите ваше устройство на поддерживаемые функции
- Убрать конфликты при взаимодействии gphoto2 с устройством
- Взаимодействие с вашим устройством
- Папки на вашем устройстве
- Получение файлов с вашего устройства
- Загрузка файлов на ваше устройство
- Список файлов на вашем устройстве
- Изучение ваших вариантов
Не позволяйте названию программы обмануть вас — она может обрабатывать все типы файлов, а не только фотографии. Более того, она поддерживает скрипты, гибкие и намного более мощные, чем большинство интерфейсов GUI. Это наиболее удобный способ синхронизации данных между вашим компьютером и мобильным устройством.
Установить gPhoto2
Скорее всего, в вашей системе Linux уже установлена libgphoto2, потому что это ключевая библиотека для взаимодействия с мобильными устройствами.
Поэтому вам необходимо установить всего лишь программу gPhoto2.
На Fedora или RHEL:
sudo dnf install gphoto2
На Debian или Ubuntu:
sudo apt install gphoto2
Проверка на совместимость с вашим устройством
Чтобы убедиться, что ваше мобильное устройство поддерживается, используйте:--list-cameras
Чтобы увидеть весь список поддерживаемых устройств, введите команду:
gphoto2 --list-cameras | less
Что бы сузить круг поиска и выбрать сразу именно ваше, вы можете использовать дополнительно команду grep
. Например, если у вас Samsung Galaxy, тогда используйте grep с выключенной чувствительностью к регистру с помощью переключателя:-i
gphoto2 --list-cameras | grep -i galaxy
результат:
«Samsung Galaxy models (MTP)»
«Samsung Galaxy models (MTP+ADB)»
«Samsung Galaxy models Kies mode»
Это подтверждает, что устройства Samsung Galaxy поддерживаются через MTP и MTP с ADB.
Если вы не можете найти свое устройство в списке, вы все равно можете попробовать использовать gphoto2 на случай, если ваше устройство на самом деле маскируется под другой бренд.
Найди свое мобильное устройство
Чтобы использовать gPhoto2, сначала необходимо подключить мобильное устройство к компьютеру, установить режим MTP и, возможно, вам нужно дать компьютеру разрешение на взаимодействие с ним. Обычно для этого требуется физическое взаимодействие с вашим устройством, в частности нажатие кнопки в пользовательском интерфейсе, чтобы разрешить доступ к его файловой системе с компьютера, к которому он только что подключен.
Если вы не предоставляете компьютеру доступ к мобильному телефону, gPhoto2 обнаружит ваше устройство, но не сможет с ним взаимодействовать.
Чтобы убедиться, что ваш компьютер обнаруживает подключенное устройство, используйте параметр: --auto-detect
gphoto2 --auto-detect
Например, мой Xiaomi Redmi 8 Pro определился вот так:
Модель Порт
----------------------------------------------------------
Xiaomi Mi-2s (id2) (MTP) usb:001,005
Если ваше устройство не обнаружено, сначала проверьте кабели, а затем убедитесь, что ваше устройство настроено для взаимодействия через MTP или ADB, или какой-либо протокол, поддерживаемый gPhoto2 для вашего устройства, как показано в выходных данных --list-cameras
.
Опросите ваше устройство на поддерживаемые функции
В современных устройствах обычно имеется множество потенциальных функций, но поддерживаются не все. Вы можете это узнать наверняка с опцией: --abilities
.
gphoto2 --abilities
В режиме «Передача файлов» на телефоне, я получил вот такой ответ:
Функции фотоаппарата: Xiaomi Mi-2s (id2) (MTP)
Поддержка послед. порта: нет
Поддержка USB: да
Режимы съёмки: Драйвер не поддерживает режим съёмки
Поддержка настройки: нет
Удаление выбранных файлов с фотоаппарата: да
Удаление всех файлов с фотоаппарата: нет
Поддержка миниатюр: нет
Поддержка загрузки файлов: да
А вот в режиме «Передача файлов PTP» уже интересней результат, ответов «да» уже больше. Правда и определился он непонятно:
Функции фотоаппарата: USB PTP Class Camera
Поддержка послед. порта: нет
Поддержка USB : да
Режимы съёмки: Фото, Предв. просмотр
Поддержка настройки: да
Удаление выбранных файлов с фотоаппарата: да
Удаление всех файлов с фотоаппарата: нет
Поддержка миниатюр: да
Поддержка загрузки файлов: да
Если у вас подключено только одно устройство, тогда нет необходимости указывать, какое именно устройство вы запрашиваете. Однако если вы подключили более одного устройства, с которым gPhoto2 может взаимодействовать, вы можете указать устройство по порту, модели камеры или usbid.
Убрать конфликты при взаимодействии gphoto2 с устройством
У вас может возникнуть конфликт существующих приложений при доступе к устройству и вы можете получить следующее сообщение:
*** Ошибка ***
Ошибка в библиотеке ввода-вивода (‘Could not claim the USB device’): Could not claim interface 0 (Устройство или ресурс занято). Make sure no other program (gvfs-gphoto2-volume-monitor) or kernel module (such as sdc2xx, stv680, spca50x) is using the device and you have read/write access to the device.
*** Ошибка (-53: «Could not claim the USB device») ***Для получения отладочных сообщений воспользуйтесь параметром —debug.
Отладочные сообщения могут помочь найти решение вашей проблемы.
Если вы хотите какие-либо сообщения gphoto с список рассылки авторов
программы, то запускайте
gphoto2 со следующими параметрами:env LANG=C gphoto2 —debug —debug-logfile=my-logfile.txt —list-folders
Проверьте, что аргументы надёжно экранированы.
Это устраняется путем завершения пары процессов, которые уже работают с вашим устройством. На примере моего случая:
$ ps aux | grep gphoto we 18618 0.0 0.0 309520 15800 ? Ssl лип03 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor $ kill -9 18618
$ ps aux | grep gvf | grep mtp we 18622 0.0 0.0 282812 6908 ? Ssl лип03 0:00 /usr/lib/gvfs/gvfs-mtp-volume-monitor we 27675 0.2 0.0 532868 10300 ? Sl 10:40 0:00 /usr/lib/gvfs/gvfsd-mtp --spawner :1.5 /org/gtk/gvfs/exec_spaw/17 $ kill -9 18622 $ kill -9 27675
После этого вам ничего не должно мешать для доступа к устройству. Но помните, что после перезагрузки они опять появятся.
Взаимодействие с вашим устройством
Если ваше устройство поддерживает захват, то вы можете захватывать медиа через камеру с вашего компьютера. Например, чтобы сделать снимок:
gphoto2 --capture-image
Чтобы сделать снимок и сразу же перенести его на компьютер, на котором вы находитесь:
gphoto2 --capture-image-and-download
Вы также можете захватывать видео и звук.
Если у вас подключено более одной камеры, вы можете указать, какое устройство вы хотите использовать, по порту, модели камеры или usbid:
gphoto2 --camera "Samsung Galaxy models (MTP)" --capture-image-and-download
Файлы и папки на вашем устройстве
Чтобы разумно взаимодействовать с файлами на вашем устройстве, вам необходимо понимать структуру файловой системы, доступной для gPhoto2.
Вы можете посмотреть доступные папки с опцией:--get-folders
$ gphoto2 --list-folders There are 2 folders in folder '/'. - store_00010001 - store_00020002 There are 0 folders in folder '/store_00010001'. There are 0 folders in folder '/store_00020002'.
Каждая из этих папок представляет место хранения на устройстве.
В данном примере:
store_00010001 — это внутреннее хранилище;
store_00020002 — SD-карта.
Ваше устройство может иметь другую структуру.
Получение файлов с вашего устройства
Теперь, когда вы знаете расположение папок на вашем устройстве, вы можете загружать файлы с вашего устройства. Есть много разных опций, которые вы можете использовать, в зависимости от того, что вы хотите взять с устройства.
Вы можете получить конкретный файл, если вы знаете полный путь:
gphoto2 --get-file IMG_0001.jpg --folder /store_00010001/myphotos
Вы можете получить все файлы одновременно:
gphoto2 --get-all-files --folder /store_00010001/myfiles
Вы можете получить только аудио файлы:
gphoto2 --get-all-audio-data --folder /store_00010001/mysounds
Существуют и другие варианты. Большинство из них зависят от того, что поддерживают ваше устройство и используемый протокол.
Загрузка файлов на ваше устройство
Теперь, когда вы знаете свои потенциальные целевые папки, вы можете загружать файлы со своего компьютера на свое устройство. Например, предполагая, что в вашем текущем каталоге есть файл example.epub
, вы можете отправить его на ваше устройство с опцией --upload-file
совместно с опцией --folder
, чтобы указать, в какое место хранения вы хотите загрузить:
gphoto2 --upload file example.epub --folder store_00010001
Вы можете создать каталог на своем устройстве, если вы предпочитаете загружать несколько файлов в новую папку:
gphoto2 --mkdir books --folder store_00010001 gphoto2 --upload-file *.epub --folder store_00010001/books
Список файлов на вашем устройстве
Чтобы просмотреть файлы, загруженные на ваше устройство, используйте опцию: --list-files
$ gphoto2 --list-files --folder /store_00010001 There is 1 file in folder '/store_00010001' #1 example.epub 17713 KB application/x-unknown $ gphoto2 --list-files --folder /store_00010001/books There is 1 file in folder '/store_00010001' #1 example0.epub 17713 KB application/x-unknown #2 example1.epub 12264 KB application/x-unknown [...]
Изучение ваших вариантов
Большая часть функционала gPhoto2 зависит от вашего устройства, поэтому ваш опыт может отличаться от других.
Есть много других опций. Изучите их:
gphoto2 --help