2 votes

Comment diffuser une sauvegarde cryptée de l'ensemble du dispositif vers un hôte distant ?

J'ai un appareil Android qui n'a pas d'espace libre et pas de carte SD que je puisse remplacer (grâce à la politique de OnePlus). Je n'ai pas non plus d'espace libre sur le PC pour accueillir la sauvegarde, je voulais donc la télécharger sur le cloud. J'ai un accès SSH et Root à l'appareil. J'ai également un espace serveur FTP distant (auquel je ne fais pas confiance, cependant).

Je voudrais créer un site protégé par un mot de passe tar o zip et le télécharger là. Je ne suis pas sûr qu'un zip de / est suffisant à des fins de sauvegarde.

Le problème, c'est qu'il n'y a plus d'espace libre sur l'appareil et que je dois donc créer le fichier zip à la volée et le "streamer" vers le serveur de sauvegarde (c'est SFTP sur le port 30).

J'ai vérifié que le SSH, rsync y zip Les commandes sont disponibles mais je ne suis pas sûr de savoir comment faire une sauvegarde complète, cryptée zip la compression et le téléchargement SFTP sans écrire sur le disque.

Comment puis-je combiner les commandes pour le faire tout en étant connecté à l'appareil par SSH ?

1voto

Irfan Latif Points 16863

Nous avons authentifié connexion, crypté archives, rsync et le transport multiple protocoles (y compris HTTP, WebDAV, FTP et SSH/SFTP) dans un seul outil : rclone . Il prend en charge système de fichiers local et un certain nombre de stockage en ligne . De plus, il possède les quatre éléments mentionnés ci-dessus. serveurs intégrés . Cela signifie que tout ce dont vous avez besoin des deux côtés est rclone . Pas d'accès à la racine est nécessaire non plus. Si vous voulez monter un répertoire distant (en utilisant rclone mount ), mais cela nécessite le support de FUSE et un accès Root sur Android.

rclone dispose d'un cryptage intégré, c'est-à-dire que les fichiers à distance seront créés de manière cryptée. Plusieurs méthodes d'authentification sont également prises en charge, notamment le nom d'utilisateur/mot de passe et les clés RSA (avec SFTP), mais elles sont généralement inutiles lorsque le chiffrement est déjà présent.

Un cas d'utilisation simple :

Sur le serveur :

Exécutez le serveur SSH minimal s'il n'est pas déjà en marche :

~$ mkdir -p BackupDir/Encrypted
~$ rclone serve sftp --user <username> --pass <password> --addr :2222 BackupDir

Au téléphone :

Créez un mot de passe obscur :

~$ rclone obscure <password>

Créer un fichier de configuration (utiliser rclone config pour les étapes simples) :

# rclone.conf

[PLAIN_TARGET]
type = sftp
host = <server_ip>
port = 2222
user = <username>
pass = <obscure_password>
#key_file = /path/to/.ssh/id_rsa

[CRYPT_TARGET]
type = crypt
remote = PLAIN_TARGET:/Encrypted
filename_encryption = standard
directory_name_encryption = true
password = <obscure_password>

Copie du fichier de test sur le serveur sans et avec cryptage :

~$ echo Hi >test_file
~$ rclone --config rclone.conf sync test_file PLAIN_TARGET:/
~$ rclone --config rclone.conf sync test_file CRYPT_TARGET:/

SFTP prend en charge la modification horodatage WebDAV et FTP ne le font pas. Cependant, liens symétriques ne peuvent pas être transférés en tant que liens symboliques, ils sont soit ignorés, soit le fichier d'origine est copié, soit le fichier d'origine est copié. .rclonelink est créé. Un moyen de copier les liens symboliques et toutes les métadonnées, y compris les horodatages, attributs étendus (comme les étiquettes SELinux), et ACLs est de jeter tar flux à rclone rcat :

~$ tar --xattrs -cpvzf - test_file | rclone rcat CRYPT_TARGET:/test_file.tgz

De même, vous pouvez récupérer le fichier en utilisant rclone cat . Cela permettra également de réduire considérablement temps de transfert (même jusqu'à moins de la moitié), en particulier si vous avez un grand nombre de fichiers de petite taille. Ajout d'un nombre raisonnable compression a tar peut même réduire l'utilisation de l'espace et le temps, mais une compression élevée peut aussi mal tourner. Cependant, cette méthode La synchronisation incrémentielle ne fonctionne pas et vous devez untar pour utiliser des fichiers à distance. Il est également possible (en utilisant des scripts) de ne trouver que les fichiers modifiés en exécutant rclone check ou en passant l'option --dry-run a rclone sync et ensuite ajouter ces fichiers à tar archives.

Je ne suis pas sûr qu'un zip de / est suffisant à des fins de sauvegarde.

Sous Android, rootfs / contient un certain nombre de répertoires et de points de montage - des pseudo-systèmes de fichiers tels que sysfs , procfs et les systèmes de fichiers en lecture seule comme system y vendor les partitions - qui ne peuvent pas être ou n'ont pas besoin d'être sauvegardées. Les paramètres de l'utilisateur, les données des applications et les données personnelles sont stockés dans /data partition. Pour plus de détails, voir Partitions et systèmes de fichiers Android y Comment l'espace disque est utilisé sur un appareil Android ? .

Vous pouvez donc sauvegarder des répertoires sélectionnés à partir de /data ou toute la partition au maximum. Cependant, comme mentionné par @ alecxs en commentaire, si vous avez l'intention de restaurer les données des applications (en /data/data ), vous devrez vous occuper minutieusement des métadonnées des fichiers - en particulier les UID/GID et les contextes SELinux.

Disons que vous voulez sauvegarder l'ensemble /data partition, do :

~# tar --xattrs -cpvzf - /data | rclone -P rcat PLAIN_TARGET:/data.tgz

Pour des idées sur la façon de vider des partitions complètes (périphériques de bloc), voir Comment récupérer un fichier supprimé de la partition /data ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X