-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdd-rsync-remote-local.html
More file actions
60 lines (59 loc) · 5.28 KB
/
dd-rsync-remote-local.html
File metadata and controls
60 lines (59 loc) · 5.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!--
title: DD/RSYNC - Distant/Local
description: Récemment, j'ai du rapatrier un VPS hébergé chez OVH vers mon hyperviseur local Proxmox ! Voici la commande magique 😉
published: true
date: 2024-12-17T10:09:35.950Z
tags: rsync, clone
editor: ckeditor
dateCreated: 2024-12-01T15:36:34.400Z
-->
<p><i>Juste pour l'histoire, l'ensemble de mes services tournent à la maison sur un cluster</i> <a href="https://www.proxmox.com/en/proxmox-virtual-environment/overview">Proxmox VE</a><i>.</i></p>
<p><i>L'ensemble ? Non ! Deux services tournent sur des</i> <a href="https://w.wiki/CG6P">VPS</a> <i>chez</i> <a href="https://www.ovhcloud.com/fr/">OVH</a>. <a href="https://mastodon-blablalinux.be/@blablalinux">Mastodon</a> <i>et</i> <a href="https://peertube-blablalinux.be/a/anyblabla/video-channels">PeerTube</a><i>.</i></p>
<p><i>Je me suis donc attelé à leur rapatriement vers la maison.</i></p>
<p><i>Voici la commande magique que j'ai utilisée, à partir du serveur local, afin de réaliser un clone complet du disque au travers de</i> <a href="https://w.wiki/Acov">SSH</a><i>.</i></p>
<p> </p>
<pre><code class="language-plaintext">ssh root@xx.xx.xx.xxx -p xxxx "dd if=/dev/sda bs=100M" | dd of=/dev/sdb status=progress</code></pre>
<p> </p>
<ul>
<li><strong>ssh root@xx.xx.xx.xxx</strong> : on appelle SSH avec son nom utilisateur vers l'adresse IP du serveur distant.</li>
<li><strong>-p xxxx</strong> : on précise le port SSH, si ce dernier a été changé et n'est plus le port 22 par défaut.</li>
<li><strong>dd if=/dev/sda bs=100M</strong> : on appelle la commande DD pour cloner, en précisant la source (IF) suivie de la taille des blocs. Ici “bs=100M” car c'est un disque SSD.</li>
<li><strong>dd of=/dev/sdb</strong> : on continue avec la commande DD pour le clonage, mais cette fois sur la destination (of=/dev/sdb) en demandant l'affichage de la progression (status=progress).</li>
</ul>
<p> </p>
<p>Sur l'image ci-dessous, on peut voir que l'opération de clonage avec la commande DD au travers de SSH, d'un serveur distant vers un serveur local, c'est déroulé sans problème.</p>
<p> </p>
<figure class="image"><img src="/dd-rsync-distant-local/dd.png"></figure>
<p> </p>
<p>Si comme moi, vous n'arrêtez pas directement le serveur distant pour mettre en route le serveur local à la place, il va falloir lancer une synchronisation, à partir du serveur local, au moment arrivé ! Voici la commende magique 😉</p>
<p> </p>
<pre><code class="language-plaintext">rsync -avz --inplace --delete -P --stats --human-readable --progress --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/media/*","/lost+found"} -e "ssh -p xxxx" root@xx.xx.xx.xxx:/ /media/mastodon/</code></pre>
<p> </p>
<ul>
<li><strong>-avz</strong>
<ul>
<li><strong>-a (archive)</strong> : cette option augmente la quantité d'informations qui vous sont données lors du transfert. Par défaut, rsync fonctionne en silence.</li>
<li><strong>-v (verbose)</strong> : c'est une façon rapide de dire que vous voulez de la récursion et envie de préserver presque tout.</li>
<li><strong>-z (compress)</strong> : avec cette option, rsync compresse les données du fichier lorsqu'elles sont envoyées à la machine de destination, ce qui réduit la quantité de données transmises - quelque chose qui est utile sur une connexion lente.</li>
</ul>
</li>
<li><strong>--inplace</strong> : cette option modifie la manière dont rsync transfère un fichier lorsque ses données doivent être mises à jour : au lieu de la méthode par défaut consistant à créer une nouvelle copie du fichier et à la mettre en place quand il est terminé, rsync écrit plutôt les données mises à jour directement dans le fichier de destination.</li>
<li><strong>--delete</strong> : cela indique à rsync de supprimer les fichiers étrangers du côté récepteur (ceux qui ne sont pas du côté émetteur).</li>
<li><strong>-P</strong> : équivaut à --partiel --progrès. Son objectif est de faciliter grandement leur précision, deux options pour un long transfert qui peut être interrompu.</li>
<li><strong>--stats</strong> : indique à rsync d'afficher un ensemble verbeux de statistiques sur le transfert de fichiers, vous permettant de voir l'efficacité de rsync.</li>
<li><strong>--human-readable</strong> : sortie dans un format plus lisible par l'homme.</li>
<li><strong>--progress</strong> : cette option indique à rsync d'afficher des informations montrant la progression du transfert.</li>
<li><strong>--exclude</strong> : cette option permet d'exclure sélectivement certains dossiers/fichiers de la liste à transférer.</li>
<li><strong>-e</strong> : cette option vous permet de choisir un programme shell distant alternatif à utiliser pour la communication entre le local et des copies distantes de rsync.</li>
</ul>
<p>Pour le restant de la commande…</p>
<ul>
<li><strong>"ssh -p xxxx" root@xx.xx.xx.xxx:/ /media/mastodon/</strong></li>
</ul>
<p>…c'est ce que l'on a vu plus haut. Connexion SSH avec précision de la source et de la destination.</p>
<p> </p>
<h3>Liens utiles</h3>
<ul>
<li><a href="https://linux.die.net/man/1/rsync">https://linux.die.net/man/1/rsync</a></li>
<li><a href="https://ss64.com/bash/rsync_options.html">https://ss64.com/bash/rsync_options.html</a></li>
</ul>