тл;др
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), пожалуйста!
Спасибо за помощь.
Как и в большинстве случаев: ошибка на 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
.
ОБНОВЛЕНИЕ - Вторая попытка
Так бывает, что этой суммы может быть слишком много для одной попытки. Может быть, это и мой дрянной смартфон тоже. В целом работает, и после первой начальной загрузки, я думаю, все будет хорошо.
бишайамс
бишайамс
бишайамс
Баш.д