GNU/Linux >> Tutoriels Linux >  >> Linux

Reprendre les fichiers partiellement transférés via SSH à l'aide de Rsync

Imaginez ce scénario. Vous copiez des fichiers volumineux d'un système à un autre via SSH en utilisant scp commande. Soudain, l'alimentation est coupée, la connexion réseau est interrompue et le processus de copie est terminé à mi-chemin. Que feriez-vous? Redémarrez simplement le processus de copie une fois le courant rétabli ? Oui, ça marche. Cependant, le scp La commande n'a pas d'option de reprise, elle commencera donc simplement à copier les fichiers depuis le début et écrasera les fichiers existants. C'est une tâche un peu ennuyeuse et chronophage. C'est là que Rsync utilitaire vient en aide! Nous pouvons facilement reprendre les fichiers partiellement transférés via SSH en utilisant Rsync. Il vous aide à reprendre le processus de copie ou de téléchargement interrompu là où vous l'avez laissé.

Qu'est-ce que Rsync ?

Pour ceux qui se demandent, Rsync est un utilitaire de copie de fichiers rapide et polyvalent qui peut être utilisé pour copier et transférer des fichiers ou des dossiers vers et depuis des systèmes distants et locaux. Il offre un grand nombre d'options qui contrôlent chaque aspect de son comportement et permettent une spécification très flexible de l'ensemble de fichiers à copier. Il est célèbre pour son algorithme de transfert delta , ce qui réduit la quantité de données envoyées sur le réseau en n'envoyant que les différences entre les fichiers source et les fichiers existants dans la destination. Rsync est largement utilisé pour les sauvegardes et la mise en miroir, ainsi que comme commande de copie améliorée pour une utilisation quotidienne.

Tout comme scp , rsync peut également copier des fichiers via SSH. Si vous souhaitez télécharger ou transférer des fichiers et des dossiers de grande taille via SSH, je vous recommande d'utiliser l'utilitaire rsync comme décrit ci-dessous.

Installer Rsync sous Linux

Veuillez que l'utilitaire rsync soit installé des deux côtés (c'est-à-dire les systèmes distants et locaux) afin de reprendre les fichiers partiellement transférés. Rsync est disponible dans les dépôts officiels de la plupart des distributions Linux, vous pouvez donc l'installer à l'aide du gestionnaire de packages par défaut de la distribution.

Sur Alpine Linux , nous pouvons installer Rsync comme ci-dessous :

$ sudo apk add rsync

Sur Arch Linux et ses variantes, installez Rsync à l'aide de la commande :

$ sudo pacman -S rsync

Sur Debian , Ubuntu , Linux Mint :

$ sudo apt-get install rsync

Sur Fedora , RHEL , CentOS , AlmaLinux et Rocky Linux :

$ sudo dnf install rsync

Sur SUSE/openSUSE :

$ sudo zypper install rsync

Reprendre les fichiers partiellement transférés à l'aide de Rsync

Voyons maintenant un exemple. Je vais copier le fichier ISO Ubuntu de mon système local vers un système distant à l'aide de la commande suivante :

$ scp ubuntu.iso [email protected]:/home/sk/

Ici,

  • sk est le nom d'utilisateur de mon système distant
  • 192.168.225.22 est l'adresse IP de la machine distante.
  • /home/sk/ est la destination distante.

Maintenant, j'ai terminé le processus de copie de force en appuyant sur CTRL+C .

Exemple de résultat :

Mot de passe de
[email protected]'s password: 
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c

Comme vous le voyez dans la sortie ci-dessus, j'ai mis fin au processus de copie lorsqu'il a atteint 33 %.

Si je relance la commande ci-dessus, elle écrasera simplement le fichier existant. En d'autres termes, le processus de copie ne reprendra pas là où je l'ai laissé.

Afin de reprendre le processus de copie pour copier le fichier ISO partiellement transféré, utilisez rsync commande comme indiqué ci-dessous.

$ rsync -P -rsh=ssh ubuntu.iso [email protected]:/home/sk/

Exemple de résultat :

[email protected]'s password: 
sending incremental file list
ubuntu.iso
834.00M 100% 14.81MB/s 0:00:56 (xfr#1, to-chk=0/1)

Voir? Maintenant, le processus de copie reprend là où nous l'avons laissé plus tôt.

Vous pouvez également utiliser "--partial " au lieu du paramètre "-P " comme ci-dessous.

$ rsync --partial -rsh=ssh ubuntu.iso [email protected]:/home/sk/

Ici, les paramètres "--partial " ou "-P " indique à la commande rsync de conserver le fichier partiellement téléchargé et de reprendre le processus.

Vérifiez si le fichier est vraiment copié ou non sur le système distant à l'aide de la commande :

$ ssh [email protected] ls -lh
[email protected]'s password: 
total 835M
-rw-rw-r-- 1 sk sk 834M Jul 26 2019 ubuntu.iso

Comme vous le voyez dans la sortie ci-dessus, le fichier Ubuntu.iso est copié sur le système distant et sa taille est de 835 Mo.

Alternativement, nous pouvons également utiliser les commandes suivantes pour reprendre les fichiers partiellement transférés via SSH.

$ rsync -avP ubuntu.iso [email protected]:/home/sk/

Ou,

$ rsync -av --partial ubuntu.iso [email protected]:/home/sk/

C'est ça. Vous savez maintenant comment reprendre les fichiers annulés, interrompus et partiellement téléchargés à l'aide de la commande rsync. Comme vous pouvez le voir, ce n'est pas si difficile. Si rsync est installé sur les deux systèmes, nous pouvons facilement reprendre le processus de copie de fichiers via SSH comme décrit ci-dessus.

Suggestion de lecture :

  • Exemples de commandes Linux Rsync pour les débutants
  • Comment reprendre un fichier partiellement téléchargé à l'aide de Wget
  • Exécuter des commandes sur des systèmes Linux distants via SSH

Linux
  1. Guide Ansible :Gérer les fichiers à l'aide d'Ansible

  2. Comment copier à distance des fichiers via SSH sans entrer votre mot de passe ?

  3. Comment copier des répertoires de manière récursive à l'aide de rsync tout en excluant des fichiers spécifiques

  4. Restreindre rsync sur ssh en lecture seule/seulement copier depuis l'hôte distant

  5. Rsync sur SSH n'obtient aucun tty présent

Comment transférer des fichiers avec Rsync sur SSH

Comment transférer des fichiers avec Rsync sur SSH

Reprendre le fichier partiellement téléchargé à l'aide de Wget sous Linux

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment utiliser la commande rsync pour copier des données localement et via SSH

Comment copier à distance des fichiers via SSH sans entrer de mot de passe