Резервное копирование внутреннего и SD-хранилища через скрипт (USB)

тл;др

  • Я хочу сделать резервную копию содержимого внутренней памяти и SD-карты при подключении через USB-кабель
  • из-за потенциально больших объемов данных я не хочу использовать программы на основе WiFi
  • неудачная попытка использования rsyncиgvfs

Могу ли я что-нибудь сделать?

Полная история

Я хотел бы сделать резервную копию данных с моего телефона на базе Android (в настоящее время 5.1.1). Я не хочу использовать нестабильные и небезопасные хакерские решения на основе WiFi с SSH и сервером здесь и клиентом там (что угодно — на самом деле очень ненадежное kiesпрограммное обеспечение Samsung заставило меня так думать).

К настоящему времени я использовал текущий Linux Mint (18.2), я пытался читать данные с телефона, используя rsyncподключенное хранилище, из gvfsкоторого с треском провалился (проблемы с правами доступа, нестабильное соединение).

Я хотел бы указать, какие каталоги я резервирую, и автоматизировать этот процесс, насколько это возможно. Могу ли я заставить Android действовать как какое-то виртуальное устройство, Windows/Linuxкоторое разрешает какой-то доступ к файлам? Или сервер Web-DAV, подключенный через USB-кабель? Никаких бесплатных облачных решений (Google, OneDrive, Dropbox), пожалуйста!

Спасибо за помощь.

Вы пробовали Grsync? Установите это и попробуйте. Пользовательский интерфейс ужасен, но он делает свою работу. Я использую его для резервного копирования телефона, а также для резервного копирования выбранных разделов ноутбука на внешний жесткий диск.
Смотрите это . Он также имеет тестовую кнопку, которая имитирует резервное копирование и выдает ошибки, если таковые имеются, перед выполнением резервного копирования.
Вы можете установить отсюда , и это работает на 18.3, также добавьте, что я читал в другом месте, хотя комментарии здесь указывают на обратное.
Спасибо, я попробую и посмотрю, решит ли это мои проблемы.

Ответы (1)

Как и в большинстве случаев: ошибка на 8 уровне модели OSI. Вот что я сделал и что я должен был сделать:

Что я сделал

Я смонтировал целевой внешний диск с помощью sudo(пока ничего плохого) и, таким образом, rootимею права только на запись, rsyncне смог ничего сделать (что, в конце концов, имеет смысл) - даже при работе с использованием sudo. Где именно была ошибка, я не совсем уверен, но давайте сосредоточимся на

Что я должен был сделать

  • Смонтируйте внешнее устройство с помощью инструментов графического интерфейса (поскольку я использую зашифрованный внешний диск)
  • Создайте каталог в корневом каталоге внешнего диска и chownназначьте его назначенному пользователю (или группе, или тому и другому)
  • Бегатьrsync

Я создал небольшой скрипт для автоматизации поиска пути gvfsи rsync на внешний диск:

#!/bin/bash

PHONE_VENDOR=0000 # your phone vendor here!  
USERID=1 # your user ID here - possibly `id -u`

PHONE_BUS=\`echo $(lsusb -d ${PHONE_VENDOR}:) | cut -d' ' -f 2\`  
PHONE_BUS=${PHONE_BUS}%2C
PHONE_BUS=${PHONE_BUS}\`echo $(lsusb -d ${PHONE_VENDOR}:) | cut -d' ' -f 4 | cut -b 1-3` #extract vendor ID from lsusb  

SOURCEBASE=/run/${USERID}/gvfs/mtp\:host\=%5Busb%3A${PHONE_BUS}%5D
TARGETBASE= # your target base path here

rsync -a --progress ${SOURCEBASE} ${TARGETBASE}  # your rsync commands here

Я не знаю, меняется ли что-нибудь (или работает ли этот скрипт) при применении записи fstab, а затем при монтировании через оболочку и без использования инструментов с графическим интерфейсом.

Это работает для меня и обеспечивает удобный способ резервного копирования содержимого с телефонов Android без копирования целых SD-карт или внутренних пространств.

ОБНОВЛЕНИЕ - Первая реальная попытка

Во время выполнения rsyncначал выдавать ошибки ввода-вывода, вероятно, потому, что процесс в целом занимал очень много времени (на синхронизацию ушло около 50 ГБ). Я сейчас начинаю сначала.
Может быть хорошей идеей начать основу, вручную скопировав все файлы изначально и все дальнейшие процессы синхронизации с помощью rsync.

ОБНОВЛЕНИЕ - Вторая попытка

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