Як rsync на андроїд


50

Як я можу підключитися до свого пристрою Android, щоб синхронізувати музику (чи інші речі)?


Я рекомендую відредагувати це, щоб точно пояснити, яка дія викликала це повідомлення про помилку. (Наприклад, якщо це результат команди, ви можете включити повну команду.)
Eliah Kagan

1
можливо цікаво: Syncopoli
DJCrashdummy

@DJCrashdummy, якщо ви напишете свій коментар як відповідь, я буду його проголосувати.
guettli

@guettli я написав це лише як коментар, тому що Syncopoli - це лише rsync-клієнт (поки що).
DJCrashdummy

Відповіді:


50

Фактично використовуючи rsync через MTP / usb

Простіше, ніж всі кажуть, спершу зауважте, що коли GVFS змонтує кріплення MTP, воно буде доступне під. Ви можете змусити це відкрити телефон у графічному файловому браузері (thunar / nautilus / тощо)

/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) під капотом бути безпечним. .
  • начитана людина Rsync для опису --verbose, --progress, --recursiveале вони досить самодокументіруемимі.
  • --omit-dir-times --no-perms потрібні, оскільки mtp цього не підтримує.

3
Додаю наступні параметри --omit-dir-times --no-perms --ignore-existing. Rsync не вдається встановити часові позначки каталогу через MTP. Я майже впевнений, що "без дозволів" є типовим, але мені подобається його вказувати. Ігнорування існуючих файлів дозволяє йому знаходити там, де він зупинився.
Стівен Остерміллер

4
Чому --ignore-existing? Це просто втрата надмірності. Ви завжди можете --size-onlyзменшити синхронізацію зі списком каталогів, а не контрольними сумами. Я збираюся додати, --omit-dir-timesі --no-permsтому, що це здається корисним, і я, здається, згадую помилку в кінці цього питання.
Еван Керролл

Rsync має проблеми з встановленням міток часу над MTP належним чином для мене, тому без --ignore-existingнього намагається синхронізувати всі файли. Мені подобається ваша --size-onlyпропозиція. Я спробую це замість наступного разу.
Стівен Остерміллер

3
Я також використовую поставити ~/Videos/ ./
кінцеву косу рису

Я також повинен був додати "--delete-after", щоб змусити його видаляти файли, які я вже видалив із музичної папки на комп'ютері. Таким чином, повна команда: rsync --verbose --progress --omit-dir-times --no-perms --recursive - замість --ignore-існуючий --delete-after / home / user / MUSIC /.
happyyskeptic

39

Використання sshelper

Я знайшов таке рішення:

  • Встановіть sshelper на пристрій (не потрібен укорінений пристрій, доступний на ринку google play)
  • У моїй WLAN пристрій називається "android". Але ви можете використовувати IP, якщо ви не можете вказати ім'я пристрою.

Редагуйте локальний ssh-config, щоб змінити порт за замовчуванням для хоста "android"

.ssh/config
host android
    Port 2222
  • Запустіть sshelper на пристрої.
  • Підключіть Android-пристрій до своєї WLAN.

rsync -rvlc Музика андроїд: SDCardLink /

Оновлення Я вважаю за -rvlcкраще, -aоскільки ви отримуєте багато попереджень, оскільки встановлення дозволів та позначок часу не працює. Ця опція -cробить другу синхронізацію набагато швидшою.

Я вважаю за -rvl --size-onlyкраще, -aоскільки ви отримуєте багато попереджень, оскільки встановлення дозволів та позначок часу не працює. Ця опція --size-onlyробить другу синхронізацію набагато швидшою.

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


13
Альтернативний спосіб використовувати Rsync з SSHelper без зміни .ssh / конфігурації: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin

1
@guettli, що для -c контрольна сума для синхронізації музичних файлів? це може значно сповільнитись
EdiD

5
@guettli від людини rsync: -c, --checksum. Без цієї опції rsync використовує "швидку перевірку", яка (за замовчуванням) перевіряє, чи збігаються розмір та час останньої модифікації кожного відправника та одержувача. Ця опція змінює цю функцію для порівняння 128-бітної контрольної суми для кожного файлу, який має відповідні розміри. Генерування контрольної суми означає, що обидві сторони витратять багато дискових вводу-виводу на читання всіх даних у файлах при передачі, тож це може значно уповільнити ситуацію.
ЕдіД

4
@guettli Я думаю, що це --size-onlyбуло б найшвидшим рішенням. Однак це не так врятувати, як-c
niels

2
Я використовував USB-прив’язку і отримував набагато швидші передачі. Наступна команда працювала для мене після того, як я запустив SSHelp і показав IP, 192.168.1.5який може бути різним кожен раз:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Органічний наркоман

3

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

І за допомогою LlamaLab Automate можна налаштувати пристрій Android для автоматичного y синхронізації за конкретних умов, наприклад:

  1. о 5 ранку,
  2. коли телефон підключений до певного Wi-Fi та
  3. коли вона заряджається.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.