Différences entre les versions de « Copie de fichiers »

De BlaxWiki
Aller à la navigationAller à la recherche
 
(6 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
=== Copie rapide via tar over ssh ===
=== Copie rapide over netcat ===
<pre>
On peut copier des fichiers via netcat, ca peut etre jusqu à deux fois plus rapide que via ssh car pas d encryption :
 
A faire dans cet ordre
Sur la machine qui va recevoir le fichier : ncat -nlvp 8888 | dd of=/dev/vol_kvm2_san_noha/test bs=4M
Sur la machine qui va envoyer le fichier : dd if=/dev/vol_kvm1_san_noha/test  | ncat -nv 10.250.250.84 8888
</pre>
 
=== Copie rapide via tar over ssh ou en local ===
<pre>
<pre>
Pour faire une copie de fichier rapide entre 2 machines via ssh
Pour faire une copie de fichier rapide entre 2 machines via ssh
Ligne 12 : Ligne 21 :


ssh root@10.253.6.25 "tar cvzf - /root/ben" | dd of=/root/test.tar.gz # source 10.253.6.25 vers local
ssh root@10.253.6.25 "tar cvzf - /root/ben" | dd of=/root/test.tar.gz # source 10.253.6.25 vers local
tar --exclude=.snapshot -czf - . 2> /root/tar_nfs_nfs2_20160824 | tar vxzf - -C /nfs2 # source local . vers local /nfs2, en mettant les erreurs dans un fichier


Ou alors pour un dd : dd if=/dev/volimages/firewall_image_root | ssh root@192.168.10.12 "dd of=/dev/volimages/firewall_image_root bs=1M"
Ou alors pour un dd : dd if=/dev/volimages/firewall_image_root | ssh root@192.168.10.12 "dd of=/dev/volimages/firewall_image_root bs=1M"
Si le LV comporte pas mal de vide (l os prend peu de place par rapport à la taille du LV), on peut mettre un gzip pour gagner du temps) :
dd if=/dev/vol_kvm2/centos7pxe_root | gzip | ssh root@10.253.6.4 "gunzip | dd of=/dev/vol_kvm2/tescopy bs=1M"
Pour voir où en est la copie du dd, ouvrir une 2eme console et kill -USR1 pid_du_dd, on verra dans la console du dd :
[root@kvm2-ins.agarik.com ~]# dd if=/dev/vol_kvm2/centos7pxe_root of=/dev/vol_kvm2/centos7pxe_rootnew
4135821+0 records in
4135820+0 records out
2117539840 bytes (2.1 GB) copied, 13.9036 s, 152 MB/s
</pre>
</pre>


Ligne 24 : Ligne 44 :
  les permissions, le propriétaire, le groupe, et l’horodatage des fichiers.
  les permissions, le propriétaire, le groupe, et l’horodatage des fichiers.


# sync -av /foo/ /bar/ : copie les fichiers présents dans foo dans le répertoire bar
# rsync -av /foo/ /bar/ : copie les fichiers présents dans foo dans le répertoire bar
# sync -av /foo /bar/ : copie le répertoire foo dans bar
# rsync -av /foo /bar/ : copie le répertoire foo dans bar
# rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} / root@10.0.0.5:/
 


Options :
Options :
  --delete : ce qui existe dans la cible mais pas dans la source sera supprimée
  --delete : ce qui existe dans la cible mais pas dans la source sera supprimée
--info=progress2  : permet de voir la vitesse de transfert, et le % d avancement de la copie globale
</pre>
</pre>



Version actuelle datée du 29 mai 2019 à 15:25

Copie rapide over netcat[modifier]

On peut copier des fichiers via netcat, ca peut etre jusqu à deux fois plus rapide que via ssh car pas d encryption :

A faire dans cet ordre 
Sur la machine qui va recevoir le fichier : ncat -nlvp 8888 | dd of=/dev/vol_kvm2_san_noha/test bs=4M
Sur la machine qui va envoyer le fichier : dd if=/dev/vol_kvm1_san_noha/test  | ncat -nv 10.250.250.84 8888

Copie rapide via tar over ssh ou en local[modifier]

Pour faire une copie de fichier rapide entre 2 machines via ssh
A faire sur la machine qui va envoyer les données à copier. On va donc copier tout ce qui se trouve à l endroit où l'on fait le tar vers le serveur 212.43.194.2 dans le repertoire 
/home/benbis/test (ou les données seront décompressées en arrivant)

tar cvzf - . | ssh benj@212.43.194.2 "tar xvzf - -C /home/benbis/test" (ou tar -czvf - /mon_dossier_1 /dossier/dossier_2 | ssh user@votre-serveur.com ....)

Pour un tar sans décompression à l'arrivée : 

tar cvzf - . | ssh benj@212.43.194.2 "dd of=/backup/wwwdata.tar.gz" # source local vers 212.43.194.2

ssh root@10.253.6.25 "tar cvzf - /root/ben" | dd of=/root/test.tar.gz # source 10.253.6.25 vers local

tar --exclude=.snapshot -czf - . 2> /root/tar_nfs_nfs2_20160824 | tar vxzf - -C /nfs2 # source local . vers local /nfs2, en mettant les erreurs dans un fichier

Ou alors pour un dd : dd if=/dev/volimages/firewall_image_root | ssh root@192.168.10.12 "dd of=/dev/volimages/firewall_image_root bs=1M"

Si le LV comporte pas mal de vide (l os prend peu de place par rapport à la taille du LV), on peut mettre un gzip pour gagner du temps) :
dd if=/dev/vol_kvm2/centos7pxe_root | gzip | ssh root@10.253.6.4 "gunzip | dd of=/dev/vol_kvm2/tescopy bs=1M"

Pour voir où en est la copie du dd, ouvrir une 2eme console et kill -USR1 pid_du_dd, on verra dans la console du dd :
[root@kvm2-ins.agarik.com ~]# dd if=/dev/vol_kvm2/centos7pxe_root of=/dev/vol_kvm2/centos7pxe_rootnew
4135821+0 records in
4135820+0 records out
2117539840 bytes (2.1 GB) copied, 13.9036 s, 152 MB/s

Copie via Rsync[modifier]

  • Commande de base (pour d'autres commanndes voir ici)
# rsync -av source cible (ex : rsync -av source cible)

-a équivaut à -rlptgoD, en détail, cela signifie que rsync copiera les répertoires, les liens symboliques (et non leur cible), ainsi que les fichiers spéciaux, le tout, en préservant
 les permissions, le propriétaire, le groupe, et l’horodatage des fichiers.

# rsync -av /foo/ /bar/ : copie les fichiers présents dans foo dans le répertoire bar
# rsync -av /foo /bar/ : copie le répertoire foo dans bar
# rsync -aAXv --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} / root@10.0.0.5:/


Options :
 --delete : ce qui existe dans la cible mais pas dans la source sera supprimée
 --info=progress2  : permet de voir la vitesse de transfert, et le % d avancement de la copie globale
  • Changement de port
Rsync se base sur ssh donc sur le port 22. Si ssh écoute sur un autre port il faudra lancer la commande suivante 
rsync -av -e "ssh -p 44230" --delete-before --exclude=.ssh/ /home/user/backup/ user@host_destination:/var/backup/user --stats --bwlimit=25

    options :
        a : permet d'activer la récursivité
        v : permet à la commande d'être verbeuse
        e : permet de disposer d'option ssh. Dans notre cas nous spécifions un port particulier (44230)
        D : permet de copier les fichiers speciaux tel /dev/null
        --partial : permet de relancer la copie d'un fichier d'où il a échoué et non pas depuis le début du fichier
        exclude : permet d'exclure des répertoires du backup en partant du répertoire source du backup.
                  Dans la commande, le fait de spécifier ”.ssh/” exclut ”/home/user/backup/.ssh/”.
        stats : permet d'afficher un rapport de fin de backup
        bwlimit : permet de limiter le débit. La valeur par défaut est en Kb [kilobytes = kilo octets]