Comment sauvegarder des fichiers de son téléphone vers un serveur? Si vous voulez que tout reste chez vous, il y a plusieurs solutions. J'ai essayé syncthing et ça fonctionne bien mais ne correspond pas à mes besoins.
Je veux juste sauvegarder le contenu du téléphone quand je le demande. J'ai découvert Termux ( Merci Grisebouille ) et j'ai pu réaliser mes sauvegardes comme je le souhaite.
Avant de commencer
D'un côté, munissez vous d'un téléphone sous LineageOS ou Android. Installez Termux et son supplément Termux:Widget.
De l'autre côté, il faut un serveur SSH, pas plus pas moins.
Termux
Cette application permet d'avoir un terminal sur son téléphone. Donc la ligne de commande et toutes ses possibilités.
Après l'installation, lancez une mise à jour :
pkg update
Pour accéder aux données du téléphone, il faut lancer :
termux-setup-storage
Vous aurez accès aux fichiers du téléphone et pas seulement au «home» de Termux.
En plus un répertoire «storage» est crée dans le répertoire «home» de Termux avec des raccourcis vers :
- Les photos (dcim)
- Les téléchargements (download)
- Les films (movies)
- La musique (music)
- Les images (pictures)
- Le répertoires racine du téléphone (shared)
Avec mon écran 5 pouces et sans clavier, une utilisation prolongée du terminal est peu pratique. La solution existe, accédez au téléphone depuis un PC. Pour cela on installe un serveur SSH sur le téléphone et on le lance :
pkg install openssh
passwd
sshd
Puis on accède au téléphone depuis un PC :
ssh 192.168.X.X -p 8022
Si vous n'êtes pas sous GNU/Linux, vous pouvez utiliser PuTTY.
rsync
Comme le dit Wikipedia, rsync remote synchronization, (en français : « synchronisation distante ») est un logiciel libre de synchronisation de fichiers, distribué sous licence GNU GPL.
Pour installer rsync sur Termux :
pkg install rsync
Pour synchroniser le répertoires des photographies du téléphone vers le serveur :
rsync -r --progress --stats \
/storage/emulated/0/DCIM/ \
utilisateur@serveur:~/Téléphone/DCIM
L'«utilisateur» est celui du serveur SSH et «serveur» est l'adresse du serveur «bidule.org» ou en local «192.168.?.?».
Parmi les nombreuses options, je n'en utilise que trois :
- -r : pour que rsync s'occupe de tous les sous-répertoires,
- --progress : pour qu'il affiche l'avancement de la synchronisation,
- --stats : pour qu'il affiche un bilan de la synchronisation.
Pas besoin de créer les répertoires sur la destination, c'est automatique.
Par contre, il faut renseigner le mot de passe du serveur SSH à chaque synchronisation.
SSH sans mot de passe
Pour éviter de renseigner le mot de passe à chaque connexion au SSH on peut utiliser un système de clés cryptographiques.
Sur le téléphone, on crée les clés et on copie la clé publique sur le serveur :
ssh-keygen
scp -p id_rsa.pub utilisateur@serveur.net:~/.ssh/
Sur le serveur, on ajoute la clé à celles autorisées :
cat id_rsa.pub >> authorized_keys
Merci Korben pour cette solution.
Le script de sauvegarde
Pour sauvegarder mes quatre répertoires en une fois, j'écris un petit script que je place dans le répertoire «.shortcuts». Et je le rends exécutable :
pkg install nano
nano .shortcuts/sauvegarde.sh
chmod +x .shortcuts/sauvegarde.sh
Voici le script :
#!/data/data/com.termux/files/usr/bin/sh
rsync -r --progress --stats \
/storage/emulated/0/bluetooth/ \
utilisateur@serveur:~/Téléphone/bluetooth
rsync -r --progress --stats \
/storage/emulated/0/DCIM/ \
utilisateur@serveur:~/Téléphone/DCIM
rsync -r --progress --stats \
/storage/emulated/0/Download/ \
utilisateur@serveur:~/Téléphone/Download
rsync -r --progress --stats \
/storage/emulated/0/Movies/ \
utilisateur@serveur:~/Téléphone/Movies
rsync -r --progress --stats \
/storage/emulated/0/Music/ \
utilisateur@serveur:~/Téléphone/Music
Grâce au supplément Termux:widget, je place un widget sur mon écran d'accueil. Ce dernier me liste tous les scripts dans le répertoire «.shortcuts». Et je peux les lancer avec un doigt.
Petit problème
D'habitude, j'édite mes fichiers avec vim qui existe sous Termux. Cependant j'ai eu des soucis avec donc j'ai opté pour nano.