51 votes

Comment imprimer des fichiers qui auraient été modifiés avec rsync ?

Existe-t-il un moyen de faire en sorte que rsync imprime les chemins d'accès complets à tous les fichiers qui sont différents sans transférer de fichiers ?

Alternativement, j'ai besoin d'un moyen de différencier les fichiers entre deux arbres (via SSH) en se basant uniquement sur le changement de taille ou sur la date de dernière modification.

0voto

Breezeight Points 499

J'opterais pour quelque chose comme ça :

#! /bin/bash 

set -eu   ## Stop on errors and on undefined variables

## The local directory name
LOCAL_DIR=$1
## The remote directory in rsync sintax. Example: "machine:directory"
REMOTE_DIR=$2

shift 
shift 
# Now the first two args are gone and any other remaining arguments, if any, 
# can be expanded with $* or $@

# Create temporary file in THIS directory (hopefully in the same disk as $1:
# we need to hard link, which can only made in the same partition)
tmpd="$(mktemp -d  "$PWD/XXXXXXX.tmp" )"

# Upon exit, remove temporary directory, both on error and on success
trap 'rm -rf "$tmpd"' EXIT

# Make a *hard-linked* copy of our repository. It uses very little space 
# and is very quick 
cp -al "$LOCAL_DIR" "$tmpd"

# Copy the files. The final «"$@"» allows us to pass on arguments for rsync 
# from the command line (after the two directories).
rsync -a "$REMOTE_DIR"/   "$tmpd/"  --size-only "$@"

# Compare both trees
meld "$LOCAL_DIR"  "$tmpd"

Par exemple :

$ cd svn 
$ rsyncmeld myproject othermachine:myproject -v --exclude '*.svn' --exclude build

0voto

siikamiika Points 353

Dans mon cas, je voulais voir la différence entre deux sauvegardes que j'avais déjà et dont la plus récente se trouvait dans un répertoire appelé backup.0 et le précédent en backup.1 . rsync produirait chaque fichier dans backup.0 lors de l'utilisation de

rsync -a --delete --itemize-changes --dry-run ./backup.0 ./backup.1

mais ce que j'ai dû faire, c'est ajouter / à la fin des répertoires :

rsync -a --delete --itemize-changes --dry-run ./backup.0/ ./backup.1/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X