Outils pour utilisateurs

Outils du site


informatique:rsync

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
informatique:rsync [19/07/2014 10:28] – créée cyrilleinformatique:rsync [29/01/2022 14:00] (Version actuelle) cyrille
Ligne 1: Ligne 1:
 ====== rsync ====== ====== rsync ======
  
 +  * [[https://linux.die.net/man/1/rsync|man page]]
   * http://rsync.samba.org/   * http://rsync.samba.org/
-  http://samba.anu.edu.au/rsync/+ 
 +Voir aussi: 
 +  https://rclone.org 
 + 
 + 
 +Si l'on veut passer des options à la commande ssh on ajoute des guillemets '"': 
 + 
 +<code bash> 
 +  rsync -avz -e "ssh -i ~/.ssh/une_cle_privee" remote_user@remote.com:/home/remote_folder/ /home/rsync/from_remote 
 +</code> 
 + 
 +À noter la présence ou l'absence du slash '/' à la fin du répertoire source qui détermine si c'est le répertoire lui-même qui sera synchronisé (sans le /) ou bien son contenu (avec le /). 
 + 
 +Quelques options pour la commande rsync: 
 +<code> 
 +    -v, --verbose increase verbosity (-v -vv -vvv) 
 +    -q, --quiet decrease verbosity 
 +    --progress show progress during transfer 
 + 
 +    -n, --dry-run show what would have been transferred 
 +    -z, --compress compress file data 
 + 
 +    -a, --archive archive mode. It is a quick way of saying you want recursion and want to preserve everything. 
 +    -r, --recursive recurse into directories 
 +    -R, --relative use relative path names 
 +    -t, --times preserve times 
 +    -c, --checksum always checksum 
 + 
 +    -u, --update update only (don't overwrite newer files) 
 +    -W, --whole-file copy whole files, no incremental checks 
 +    -I, --ignore-times Normally rsync will skip any files that are already the same length and have the same time-stamp. This option turns off this behavior. 
 +    --size-only only use file size when determining if a file should be transferred 
 +    --existing only update files that already exist 
 + 
 +    --delete delete files that don't exist on the sending side 
 +    --delete-after delete after transferring, not before 
 +    --force force deletion of directories even if not empty 
 + 
 +    --exclude=PATTERN exclude files matching PATTERN 
 + 
 +    --daemon run as a rsync daemon 
 +    --password-file=FILE get password from FILE 
 +</code> 
 + 
 +===== Tips & tricks ===== 
 + 
 +==== Synchro de machine ==== 
 + 
 +<code> 
 +rsync -aP / root@5.196.33.193:/ -e="ssh -i /root/.ssh/syncdevartefacts"  
 +--exclude=/tmp/* --exclude=/proc/* --exclude=/sys/* --exclude=/dev/
 +--exclude=/etc/network/interfaces --exclude=/etc/resolv.conf 
 +--exclude=/root/* --exclude=/etc/mtab --exclude=/boot/
 +--exclude=/etc/fstab --exclude=/net/
 +</code> 
 + 
 +==== Dans un script ==== 
 + 
 +Il peut y avoir des bugs avec l’échappement (escape) des guillemets. 
 + 
 +La commande ''set -x'' au début du script peut vraiment aider puisque les commandes seront affichées dans leur version finales. Le shell sh ou bash joue aussi sur la façon dont sont échappées les guillemets. 
 + 
 +<code bash> 
 +#!/bin/bash 
 +
 + 
 +# for debug: 
 +#set -x 
 + 
 +RMT="ssh -p 6666 -i /home/debian/.ssh/an_id_rsa_private_key" 
 +SRC="a_user@a_server:/home/a_user/wordpress" 
 +DST_PATH=/var/backups/a_user 
 + 
 +# something like : 2011-02-22_07-10 
 +BACKUP_DATE=`date '+%F_%H-%M'
 +DST_BACKUP_PATH=$BACKUP_DATE 
 +LOG_FILE=$DST_PATH/$DST_BACKUP_PATH.log 
 +RSYNC_BIN=/usr/bin/rsync 
 + 
 +$RSYNC_BIN \ 
 +        -e "$RMT"
 +        --quiet \ 
 +        --archive \ 
 +        --delete --delete-excluded --delete-after \ 
 +        --backup --backup-dir=$DST_BACKUP_PATH \ 
 +        --itemize-changes --log-file=$LOG_FILE \ 
 +        --exclude='wp-content/wflogs/'
 +        $SRC $DST_PATH 
 + 
 +gzip $LOG_FILE 
 + 
 +</code> 
 + 
 +==== Parallelizing rsync ==== 
 + 
 +Quand il y a beaucoup de dossiers et fichiers on peut lancer plusieurs ''rsync'' simultanément. 
 + 
 +Le script de https://mjanja.ch/2014/07/parallelizing-rsync/ où l'on trouvera les explications détaillées. 
 + 
 +<code bash> 
 +#!/usr/bin/env bash 
 +# borrowed / adapted from: https://wiki.ncsa.illinois.edu/display/~wglick/Parallel+Rsync 
 + 
 +# RSYNC SETUP 
 +RSYNC_PROG=/usr/bin/rsync 
 +# note the important use of --relative to use relative paths so we don't have to specify the exact path on dest 
 +RSYNC_OPTS="-aAXv --numeric-ids --progress --human-readable --delete --exclude=.glusterfs --relative" 
 +export RSYNC_RSH="ssh -T -c arcfour -o Compression=no -x" 
 + 
 +# ENV SETUP 
 +SRCDIR=/path/to/good/brick 
 +DESTDIR=/path/to/bad/brick 
 +# Recommend to match # of CPUs 
 +THREADS=4 
 +BAD_NODE=server1 
 + 
 +cd $SRCDIR 
 + 
 +# COPY 
 +# note the combination of -print0 and -0! 
 +find . -mindepth 1 -maxdepth 1 -print0 | \ 
 +    xargs -0 -n1 -P$THREADS -I% \ 
 +        $RSYNC_PROG $RSYNC_OPTS "%" $BAD_NODE:$DESTDIR 
 +</code>
  
informatique/rsync.1405758518.txt.gz · Dernière modification : 19/07/2014 10:28 (modification externe)

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki