Outils pour utilisateurs

Outils du site


informatique:rsync

rsync

rsync -az remote_user@remote.com:/home/remote_folder/ /home/rsync/from_remote

-e ssh” n'est plus nécessaire

rsync -avz -e ssh remote_user@remote.com:/home/remote_folder/ /home/rsync/from_remote

À 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 /).

Si l'on veut passer des options à la commande ssh on ajoute des guillemets '“':

rsync -avz -e "ssh -i ~/.ssh/une_cle_privee" remote_user@remote.com:/home/remote_folder/ /home/rsync/from_remote

Quelques options pour la commande rsync:

    -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

Tips & tricks

Synchro de machine

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/*

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.

#!/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
informatique/rsync.txt · Dernière modification: 14/03/2021 10:30 de cyrille