Как rsync для Android

Как я могу подключиться к своему устройству Android для rsync музыки (или другого материала)?

52
задан 4 January 2015 в 14:01

7 ответов

Используя sshelper

Я нашел это решение:

  • Установите sshelper на устройстве (никакое сделанное рутинг устройство, необходимое, доступное с рынка игры Google)
  • В моем WLAN устройство называют "андроидом". Но можно использовать IP, если Вы не можете дать устройству имя хоста.

Отредактируйте локальную ssh-конфигурацию, для изменения порта по умолчанию для хоста "андроид"

.ssh/config
host android
    Port 2222
  • Запустите sshelper на устройстве.
  • Устройство на базе Android подключения Вам WLAN.

rsync-rvlc Музыка android:SDCardLink/

Обновите I предварительных друзей -rvlc кому: -a так как Вы получаете много предупреждений начиная с установки полномочий, и метки времени не работает. Опция -c делает вторую синхронизацию намного быстрее.

Я предварительный друг -rvl --size-only кому: -a так как Вы получаете много предупреждений начиная с установки полномочий, и метки времени не работает. Опция --size-only делает вторую синхронизацию намного быстрее.

К сожалению, требуется некоторое время для музыкальных приложений для наблюдения новых файлов. Перезапуск устройства помогает.

40
ответ дан 4 January 2015 в 14:01

На самом деле, используя rsync через MTP / usb

Это проще, чем все говорят, сначала обратите внимание, что когда GVFS монтирует монтирование MTP, оно будет доступно под. Вы можете форсировать это, открыв телефон в графическом браузере файлов (thunar / nautilus / etc)

/run/user/$UID/gvfs

. Предполагая, что у вас есть одно устройство mtp, это должно работать:

$ cd /run/user/$UID/gvfs/mtp*

Найдите, куда вы также хотите передать файлы, и затем rsync их на него

$ cd SanDisk\ SD\ card/Movies/

$ pwd # prints "/run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C096%5D/SanDisk SD card/Movies"

$ rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace ~/Videos/ ./

Параметры Rsync

  • --inplace: Я настоятельно предлагаю использовать --inplace, без которого mtp может захотеть скопировать файл новым, а затем переименовать его в старый. Это может привести к копированию файла на SD-карту дважды: один раз для переноса mtp на SD-карту, а другой раз, потому что драйвер MTP может не поддерживать (mv), но может (cp / rm) находиться под капотом для обеспечения безопасности. . [+1112]
  • прочитайте man rsync для описания --verbose, --progress, --recursive, но они довольно самодокументированы.
  • --omit-dir-times --no-perms требуются, потому что mtp не поддерживает это.
0
ответ дан 4 January 2015 в 14:01

Резервное копирование rsync для Android можно настроить на обратную синхронизацию, то есть с хоста Linux на устройство Android.

А с помощью Ламы можно настроить устройство Android на автоматическую rsync при определенных условиях, например:

  1. в 5 часов утра,
  2. при телефон подключен к определенному Wi-Fi и
  3. , когда он заряжается.
0
ответ дан 4 January 2015 в 14:01

Я искал решение для rsync ОТ Android на NAS для резервного копирования изображений.

Grsync, графическая версия rsync, работала отлично.

К счастью, он также поддерживает rsync для Android. Единственная проблема - он не может сохранять временные метки, поэтому все передаваемые файлы будут иметь временные метки момента их rsync.

    sudo apt install android-file-transfer
    sudo apt-get install grsync

Похоже, ключ, который я использовал в командной строке для rsync с Android, не работает с mtp: когда я проверяю «сохранить разрешения», «сохранить владельца» и «сохранить группу» в grsync, файл не передается.Настройки grsync по умолчанию «сохранять время», «Подробный» и «Показать ход передачи» просто работают.

При rsync на android ключ -t следует опускать: файлы будут переданы, но rsync выдаст ошибку о не сохранении временных меток.

Вывод Grsync для командной строки ОТ Android:

    rsync -r -t -v --progress -s /run/user/1000/gvfs/mtp\:host\=%5Busb%3A001%2C013%5D/Micro\ SD/test /home/FREENAS/

Вывод Grsync для командной строки В Android:

   rsync -r -v --progress -s /home/FREENAS/test /run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C013%5D/Micro\ SD/

где run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C013%5D мое крепление для телефона Android точка.

3
ответ дан 1 February 2020 в 21:24

Ничего из вышеперечисленного не дало того, что я искал. В частности, часть вопроса ОП: как мне rsync мою музыку на мой телефон Android? Что ж, я взял часть предложений из этих ответов и написал свой собственный сценарий Bash:

#!/bin/bash

echo "Starting rsync with Android."

src_dir="/home/joshua/Music"
dst_dir="/run/user/$UID/gvfs/mtp:host=OnePlus_HD1925_SERIAL/Internal shared storage"
rsync --progress \
      --human-readable \
      --omit-dir-times \
      --no-perms \
      --recursive \
      --inplace \
      --size-only \
      --exclude='*.jpg' \
      --exclude='*.JPG' \
      --exclude='*.jpeg' \
      --exclude='*.JPEG' \
      --exclude='*.png' \
      --exclude='*.bmp' \
      --exclude='*.txt' \
      --exclude='*.pdf' \
      --delete \
      "$src_dir" "$dst_dir"

echo "rsync operation is done. Enjoy the music :)"

Я просто поместил его в ~ / .local / bin , где у меня есть другие сценарии (по умолчанию для вашей системы PATH должен уже иметь этот каталог). Вам просто нужно убедиться, что передача файлов включена и что хранилище действительно подключено, прежде чем запускать его. Если вы этого не сделаете, ничего страшного не случится: rsync просто накричит на вас.

Этот сценарий:

  • Принимает во внимание, что Android-устройства не могут сохранять метаданные в стиле ext4 в файлах
  • действительно быстрее, чем другие варианты, по моему опыту, используя только размер
  • Исключая обложки альбомов и сканы от переполнения файловой системы вашего телефона :)
  • Действительно синхронизируется! Он удаляет материал, когда вы удаляете его из источника, например, исправляя метаданные песни и заменяя их правильным файлом вместо сохранения двух копий.

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

# Remove all *.jpg and *.JPG from the current directory, recursively.
find . -iname *.jpg -exec rm {} \;
1
ответ дан 11 April 2020 в 22:34

Я знаю, что OP хотел использовать rsync, но если идея состоит в том, чтобы синхронизировать каталоги, я настоятельно рекомендую использовать syncthing. Многие, многие, преимущества:

  • он будет работать непрерывно, нет необходимости время от времени запускать его;
  • он будет синхронизировать много разных папок, со многими различными устройствами, одновременно;
  • Вы можете использовать syncthing как часть решения для резервного копирования вашего мобильного телефона в два этапа: (1) вы синхронизируете все важные данные с вашего мобильного телефона на внешний хост (2) вы настраиваете решение для резервного копирования на этом хосте.

Я лично синхронизирую все важные данные с любого устройства, которым я владею, по крайней мере, с другим устройством, возможно, двумя, расположенными в физически разных местах; по крайней мере одно из этих устройств имеет RAID-диски; Затем я добавляю snapper на одно устройство, чтобы сохранить старые версии всех файлов; или вы можете использовать функцию syncthing для достижения тех же результатов.

И последнее предостережение. Если на одном устройстве не хватает места, это устройство прекратит синхронизацию, но вы не получите от него никакой ошибки, поэтому вы должны время от времени проверять. Если вы используете snapper, то довольно легко заполнить диски, caveat emptor.

0
ответ дан 1 June 2020 в 17:13

Использование Termux

Termux предоставляет множество утилит командной строки Linux для Android, включая rsync и openssh.

Вы можете настроить SSH-сервер на своем Android-устройстве, а затем использовать rsync через SSH, при условии, что и ваш ПК, и ваше Android-устройство подключены к одному и тому же соединению WLAN.

Вики Termux четко объясняет шаги, необходимые для настройки SSH и использования rsync.

Подводя итог:

  1. Настройте Termux

    • Установите Termux
    • Предоставьте Termux доступ к файловой системе (разрешение Хранилище) из настроек Android
    • Откройте Termux
    • Установите пароль
      $ пароль
      Новый пароль:
      Введите повторно новый пароль:
      Новый пароль успешно установлен.
      
    • Обновить список пакетов
      $ точное обновление
      
    • При желании также обновите существующие пакеты (в моем случае это решило проблему совместимости).
      $ удачное обновление
      
  2. Настроить openssh

    • Установить openssh
      $ apt install openssh
      
    • Запустите демон ssh
      $ сшд
      
      По умолчанию прослушивается порт 8022.
  3. Установить rsync

    $ apt install rsync
    


Для начала все, что вам нужно, это:

  • Ваше имя пользователя на Termux
    $ кто
    u0_a223
    
  • IP-адрес устройства Android
    $ ip -4 а | греп wlan0 | хвост -1
    инет 192.168.1.101/16 brd 192.168.255.255 глобальная область действия wlan0
    
    , в данном случае это 192.168.1.101.


Теперь с помощью rsync можно делать практически все что угодно.Например, если вы хотите скопировать каталог ~/Music со своего ПК в каталог /sdcard устройства Android, вы можете сделать что-то вроде:

$ rsync -e 'ssh -p 8022' -aP ~/Music u0_a223@192.168.1.101:/sdcard

При запросе пароля, введите тот, который вы установили ранее.

1
ответ дан 11 August 2020 в 11:02

Другие вопросы по тегам:

Похожие вопросы: