Comment puis-je me connecter à mon appareil Android pour synchroniser de la musique (ou autre chose) avec rsync ?
Réponses
Trop de publicités?Utilisation actuelle de rsync sur MTP/usb
C'est plus simple que ce que tout le monde dit. Tout d'abord, notez que lorsque GVFS monte le point de montage MTP, il sera disponible sous. Vous pouvez forcer cela en ouvrant le téléphone dans un navigateur de fichiers graphique (thunar/nautilus/etc)
/run/user/$UID/gvfs
allez ici. En supposant que vous ayez un périphérique mtp, cela devrait fonctionner :
$ cd /run/user/$UID/gvfs/mtp*
Trouvez où vous voulez transférer les fichiers, puis utilisez rsync pour les transférer
$ cd SanDisk\ SD\ card/Movies/
$ pwd # imprime "/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/ ./
Options Rsync
--inplace
: Je recommande vivement d'utiliser--inplace
sans lequel le mtp pourrait vouloir copier le fichier de manière nouvelle, puis le renommer avec l'ancien. Cela peut entraîner la copie du fichier sur la carte SD deux fois : une fois pour le transfert mtp vers la carte SD, et une autre parce que le pilote MTP peut ne pas prendre en charge (mv), il peut (cp/rm) en interne pour être sûr.- Lisez le manuel de rsync pour une description de
--verbose
,--progress
,--recursive
mais ils sont assez explicites. --omit-dir-times
--no-perms
sont nécessaires car mtp ne prend pas en charge cela.
Utilisation de sshelper
J'ai trouvé cette solution :
- Installer sshelper sur l'appareil (pas besoin de rooter l'appareil, disponible sur le marché Google Play)
- Dans mon WLAN, l'appareil est appelé "android". Mais vous pouvez utiliser l'IP si vous ne pouvez pas donner un nom d'hôte à l'appareil.
Modifier ssh-config local pour modifier le port par défaut pour l'hôte "android"
.ssh/config
host android
Port 2222
- Démarrer sshelper sur l'appareil.
- Connecter l'appareil android à votre WLAN.
rsync -rvlc Music android:SDCardLink/
Mise à jour Je préfère -rvlc
à -a
car vous obtenez beaucoup d'avertissements car le réglage des autorisations et des horodatages ne fonctionne pas. L'option -c
rend la deuxième synchronisation beaucoup plus rapide.
Je préfère -rvl --size-only
à -a
car vous obtenez beaucoup d'avertissements car le réglage des autorisations et des horodatages ne fonctionne pas. L'option --size-only
rend la deuxième synchronisation beaucoup plus rapide.
Malheureusement, il faut un certain temps pour que les applications de musique voient les nouveaux fichiers. Redémarrer l'appareil aide.
Sauvegarde rsync pour Android peut être configuré pour synchroniser en sens inverse, c'est-à-dire d'un hôte Linux vers un appareil Android.
Et avec l'aide de LlamaLab Automate, on peut configurer l'appareil Android pour synchroniser automatiquement selon des conditions spécifiques, par exemple :
- à 5 heures du matin,
- lorsque le téléphone est connecté à un Wi-Fi spécifique, et
- lorsqu'il est en charge.
J'étais à la recherche d'une solution pour rsync DE android vers NAS pour sauvegarder des images.
Grsync, version graphique de rsync, a parfaitement fonctionné.
Heureusement, il peut également effectuer un rsync VERS android. Le seul problème est qu'il ne peut pas conserver les horodatages, de sorte que tous les fichiers transférés auront les horodatages du moment où ils ont été rsyncés.
sudo apt install android-file-transfer
sudo apt-get install grsync
Il semble que la clé -a que j'utilisais dans la ligne de commande pour rsync depuis android ne fonctionne pas avec mtp : lorsque je sélectionne "conserver les autorisations", "conserver le propriétaire" et "conserver le groupe" dans grsync, aucun fichier n'est transféré. Les paramètres par défaut de grsync "conserver l'heure", "Verbeux" et "Afficher la progression du transfert" fonctionnent simplement.
En rsync vers android, la clé -t doit être omise : les fichiers seront transférés mais rsync générera des erreurs en ne préservant pas les horodatages.
Sortie de Grsync pour la commande DE android en ligne :
rsync -r -t -v --progress -s /run/user/1000/gvfs/mtp\:host\=%5Busb%3A001%2C013%5D/Micro\ SD/test /home/FREENAS/
Sortie de Grsync pour la commande VERS android en ligne :
rsync -r -v --progress -s /home/FREENAS/test /run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C013%5D/Micro\ SD/
où run/user/1000/gvfs/mtp:host=%5Busb%3A001%2C013%5D est le point de montage de mon téléphone android.
Aucune des solutions ci-dessus n'était tout à fait ce que je cherchais. En particulier, une partie de la question de l'OP : comment puis-je rsync
ma musique sur mon téléphone Android ? Eh bien, j'ai pris des parties des suggestions de ces réponses et j'ai écrit mon propre script Bash :
#!/bin/bash
echo "Démarrage de rsync avec 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 "L'opération rsync est terminée. Profitez de la musique :)"
J'ai simplement déposé cela dans ~/.local/bin
où j'ai d'autres scripts (le PATH
par défaut de votre système doit déjà avoir ce répertoire en réalité). Vous devez juste vous assurer que le transfert de fichiers est activé et que le stockage est réellement monté avant de l'exécuter. Rien de grave ne se produira si vous ne le faites pas : rsync
vous le fera savoir.
Ce script :
- Prend en compte le fait que les Androids ne peuvent pas conserver les métadonnées de style ext4 sur les fichiers
- est vraiment plus rapide que les autres options selon mon expérience, en utilisant
size-only
- Exclut les pochettes d'albums et les scans pour ne pas inonder le système de fichiers de votre téléphone :)
- Effectue véritablement une synchronisation ! Il supprime des éléments lorsque vous en supprimez de la source, comme la correction des métadonnées des chansons et leur remplacement par le bon fichier au lieu de conserver deux copies.
En outre, si vous choisissez cette réponse spécifiquement parce que vous aimez les balises --exclude
, vous pourriez également avoir besoin d'une manière de nettoyer votre téléphone si celui-ci a déjà synchronisé tout un tas d'images indésirables :
# Supprimer tous les fichiers *.jpg et *.JPG du répertoire actuel, de manière récursive.
find . -iname *.jpg -exec rm {} \;
- Réponses précédentes
- Plus de réponses