Я рекомендую отредактировать это, чтобы точно объяснить, какое действие вызвало это сообщение об ошибке. (Например, если это вывод команды, вы можете включить полную команду.)
@DJCrashdummy, если вы напишите свой комментарий в качестве ответа, я проголосую за него.
Геттли
@guettli Я написал это только как комментарий, потому что Syncopoli - просто rsync-клиент (на данный момент).
DJCrashdummy
Ответы:
50
На самом деле с помощью rsync через MTP / USB
Проще, чем все говорят, сначала обратите внимание, что когда GVFS монтирует монтирование MTP, оно будет доступно в разделе. Вы можете форсировать это, открыв телефон в графическом файловом браузере (thunar / nautilus / etc)
/run/user/$UID/gvfs
иди туда. Предполагая, что у вас есть одно устройство mtp, это должно работать:
$ cd /run/user/$UID/gvfs/mtp*
Найдите, куда вы хотите передать файлы, а затем rsync их к нему
--inplace: Я настоятельно рекомендую использовать --inplaceбез которого mtp может захотеть скопировать файл новым, а затем переименовать его в старый. Это может привести к копированию файла на SD-карту дважды: один раз для переноса mtp на SD-карту, а другой раз, потому что драйвер MTP может не поддерживать (mv), но может (cp / rm) находиться под капотом для обеспечения безопасности. ,
начитанный человек Rsync для описания --verbose, --progress, --recursiveно они довольно самодокументируемыми.
--omit-dir-times--no-perms необходимы, потому что mtp не поддерживает это.
Я добавляю следующие варианты --omit-dir-times --no-perms --ignore-existing. Rsync не может установить временные метки каталога по MTP. Я уверен, что по умолчанию используется «no permissions», но мне нравится его указывать. Игнорирование существующих файлов позволяет подобрать то, где остановился.
Стивен Остермиллер
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 --inplace --ignore-существующие --delete-after / home / user / MUSIC /.
happyyskeptic
39
Использование sshelper
Я нашел это решение:
Установите sshelper на устройство (не нужно рутированное устройство, доступно на Google Play Market)
В моем WLAN устройство называется «андроид». Но вы можете использовать IP, если не можете дать устройству имя хоста.
Отредактируйте локальный ssh-config, чтобы изменить порт по умолчанию для хоста "android"
.ssh/config
host android
Port 2222
Запустите sshelper на устройстве.
Подключите устройство Android к вам WLAN.
rsync -rvlc Музыка для Android: SDCardLink /
ОбновитьЯ предпочитаю , -rvlcчтобы , -aтак как вы получите много предупреждений с момента установки разрешений , и временные штампы не работают. Опция -cделает вторую синхронизацию намного быстрее.
Я предпочитаю , -rvl --size-onlyчтобы , -aтак как вы получите много предупреждений с момента установки разрешений , и временные штампы не работают. Опция --size-onlyделает вторую синхронизацию намного быстрее.
К сожалению, музыкальным приложениям нужно некоторое время, чтобы увидеть новые файлы. Перезапуск устройства помогает.
Альтернативный способ использования rsync с SSHelper без изменения .ssh / config: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin
1
@guettli зачем опция -c контрольная сумма для синхронизации музыкальных файлов? это может значительно замедлиться
EdiD
5
@guettli от rsync man: -c, --checksum. Без этой опции rsync использует «быструю проверку», которая (по умолчанию) проверяет, совпадают ли размер файла и время последней модификации между отправителем и получателем. Эта опция изменяет это, чтобы сравнивать 128-битную контрольную сумму для каждого файла, который имеет соответствующий размер. Генерация контрольной суммы означает, что обе стороны будут тратить много дискового ввода-вывода на чтение всех данных в файлах при передаче, что может значительно замедлить процесс.
EdiD
4
@ Guettli Я думаю, это --size-onlyбыло бы самое быстрое решение. Однако это не так, как сохранить-c
Нильс
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/
Ответы:
На самом деле с помощью rsync через MTP / USB
Проще, чем все говорят, сначала обратите внимание, что когда GVFS монтирует монтирование MTP, оно будет доступно в разделе. Вы можете форсировать это, открыв телефон в графическом файловом браузере (thunar / nautilus / etc)
иди туда. Предполагая, что у вас есть одно устройство mtp, это должно работать:
Найдите, куда вы хотите передать файлы, а затем rsync их к нему
Параметры Rsync
--inplace
: Я настоятельно рекомендую использовать--inplace
без которого mtp может захотеть скопировать файл новым, а затем переименовать его в старый. Это может привести к копированию файла на SD-карту дважды: один раз для переноса mtp на SD-карту, а другой раз, потому что драйвер MTP может не поддерживать (mv), но может (cp / rm) находиться под капотом для обеспечения безопасности. ,--verbose
,--progress
,--recursive
но они довольно самодокументируемыми.--omit-dir-times
--no-perms
необходимы, потому что mtp не поддерживает это.источник
--omit-dir-times --no-perms --ignore-existing
. Rsync не может установить временные метки каталога по MTP. Я уверен, что по умолчанию используется «no permissions», но мне нравится его указывать. Игнорирование существующих файлов позволяет подобрать то, где остановился.--ignore-existing
? Это просто потеря избыточности. Вы всегда можете--size-only
уменьшить синхронизацию с списком каталогов, а не с контрольными суммами. Я собираюсь добавить--omit-dir-times
и,--no-perms
потому что это звучит полезно, и я, кажется, вспоминаю об ошибке в конце об этом.--ignore-existing
него пытается синхронизировать все файлы. Мне нравится ваше--size-only
предложение. Я попробую это вместо этого в следующий раз.~/Videos/ ./
Использование sshelper
Я нашел это решение:
Отредактируйте локальный ssh-config, чтобы изменить порт по умолчанию для хоста "android"
Обновить
Я предпочитаю ,-rvlc
чтобы ,-a
так как вы получите много предупреждений с момента установки разрешений , и временные штампы не работают. Опция-c
делает вторую синхронизацию намного быстрее.Я предпочитаю ,
-rvl --size-only
чтобы ,-a
так как вы получите много предупреждений с момента установки разрешений , и временные штампы не работают. Опция--size-only
делает вторую синхронизацию намного быстрее.К сожалению, музыкальным приложениям нужно некоторое время, чтобы увидеть новые файлы. Перезапуск устройства помогает.
источник
rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/
( stackoverflow.com/a/4630407/399105 )--size-only
было бы самое быстрое решение. Однако это не так, как сохранить-c
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/
Резервное копирование rsync для Android можно настроить для обратной синхронизации, то есть с хоста Linux на устройство Android.
А с помощью LlamaLab Automate можно настроить устройство Android для автоматической rsync при определенных условиях, например:
источник