Перемещение файлов с Android, настраиваемый список каталогов, командная строка

Чтобы не заканчиваться место на моем Android, я часто перемещаю все изображения на свой настольный компьютер через USB. Я делаю это почти каждый день, так как также боюсь потерять свои фотографии, если уроню телефон.

Проблема : это занимает много времени, потому что различные приложения для Android помещают свои изображения в разные папки (приложение стандартной камеры, любимое приложение камеры, приложение камеры HDR, приложение камеры Foodie, а также все приложения для обмена сообщениями, которые хранят полученные изображения в своей собственной папке, иногда даже разделение между фото и видео).

Итак, я ищу инструмент, который перемещал бы все изображения из всех этих папок.

Требования:

  • Работает на последних версиях Linux
  • Совместимость с Android 7+
  • Командная строка, она должна выполнять передачу без запроса или показа какого-либо пользовательского интерфейса или, самое большее, уведомления на рабочем столе после выполнения передачи.
  • Открытый исходный код и бесплатно
  • Из-за ограниченного тарифного плана передача через Интернет невозможна, она должна осуществляться через USB. Я подключаюсь через USB каждый день, чтобы зарядить устройство, поэтому оно меня не беспокоит.

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

Ответы (2)

Как насчет сценария оболочки, используемого adb pullдля извлечения файлов и выполнения после успешной передачи adb shell 'rm <filespec>'? Вы можете легко настроить местоположения как массив для ходьбы.

В качестве альтернативы, используя adbfs , вы можете смонтировать свое устройство, а затем работать с его хранилищем, как если бы оно было локальным, поэтому в вашем распоряжении будут любые инструменты, доступные для выполнения такой задачи в Linux, что сделает задачу менее подверженной ошибкам. Сырой скелет:

# folders on your Android device, where they are mounted by adbfs:
declare -a SRCDIRS=(/mnt/android/folder1 /mnt/android/folder2)
# root folder on your Linux machine, where they should go to:
TARGETROOT="/home/nicolas/Pictures"

# Now move them over:
for sdir in $SRCDIRS; do
  for pic in $(ls -l $sdir); do
    mv "$pic" "$TARGETROOT/$(basename $sdir)"
  done
done

Это должно полностью соответствовать вашим требованиям:

  • Работает в Linux: Да. На самом деле везде работает Bash4+.
  • Командная строка: Да.
  • Без графического интерфейса, желательно вообще без уведомлений: точно. Если вы хотите получать уведомления, это было бы возможно, используя, например, notify-send.
  • Открытый исходный код и бесплатно: Да, и то, и другое.
  • Передача через USB: Да. При необходимости можно сделать через WiFi, если вы настроите ADB через TCP.
  • Позволяет настраивать пути: даже требует этого 😁
Я думал о adb pull + rm, но меня немного беспокоит удаление файлов в крайних случаях. adbfs звучит хорошо, я попробую!
Я разделяю ваши опасения. Вот почему я рекомендовал adbfs и mvкоманду: источник будет удален только после успешного копирования.
Проблема с adbfsподходом видимо в том, что носитель не удаляется с телефона (даже после перезагрузки фотки остаются). Может adbfsтолько для чтения?
@NicolasRaoul, какая у тебя версия Android? Действительно, была проблема с доступом на запись на Android 7+, но ее предполагалось исправить (проблема все еще открыта, так что можете проверить). На Android 6 (и ниже) работает отлично, читает и пишет.

Я написал для этого инструмент на основе ответа Иззи:

https://github.com/nicolas-raoul/move-files-from-android

Он основан на adbfs, монтирует устройства Android и затем перемещает все файлы, найденные в directories.conf.

Открытый источник. Довольно быстро. Работает с Ubuntu 2018.04 и 2019.04, возможно, и с другими.