O lugar para procurar seria na opção -v
(verbose), que pode ser repetida. Isso não dá exatamente as informações solicitadas.
No entanto, você pode construir o que é desejado executando as diferentes partes usando outras opções (consulte manpage ):
-u, --update
skip files that are newer on the receiver--existing
skip creating new files on receiver--ignore-existing
skip updating files that exist on receiver
Aqui está um exemplo usando -u
e --existing
:
#!/bin/sh
# $Id: check-rsync,v 1.1 2015/10/31 01:02:58 tom Exp $
# Make a readable report showing whether files would be added (+), deleted (-),
# updated (>) or downdated (<) using rsync between two directories.
#
# Updates to directories are ignored.
#
# author: Thomas E. Dickey (2015)
usage() {
cat >&2 <<-EOF
usage: check-rsync [-d] [source] [target]
EOF
exit 1
}
OPTS=
while [ $# != 0 ]
do
case .$1 in
(.-*)
OPTS="$OPTS $1"
;;
(*)
break
;;
esac
done
[ $# = 2 ] || usage
[ -d "$1" ] || usage
[ -d "$2" ] || usage
LANG=C
export LANG
SOURCE=$1
TARGET=$2
MYTEMP=$(mktemp -d)
trap "cd; rm -rf $MYTEMP" EXIT
syncit() {
rsync -n -vaz --delete $OPTS $SOURCE/ $TARGET | \
sed -e '/^\(sending\|sent\|total\) /d' \
-e '/^$/d' \
-e '/^\.\//d' \
-e '/\/$/d' | \
sort
}
cd $MYTEMP
syncit >all-updates
syncit -u >was-newer
syncit --existing >was-existing
comm -23 all-updates was-existing | \
sed -e '/^deleting /d' \
-e 's/^/+ /' >>report
comm -23 all-updates was-newer | \
sed -e '/^deleting /d' \
-e 's/^/< /' >>report
sed -e 's/^deleting /- /' -e t -e d all-updates >>report
comm -12 all-updates was-newer | \
sed -e 's/^[[:space:]]\+//' \
-e '/^deleting /d' -e 's/^/> /' >>report
sort -k2 report
Eu usei isso para comparar duas árvores de diretórios locais (cerca de 10.000 arquivos com cerca de 100 alterações). O script verifica explicitamente que seus parâmetros são diretórios. Essa verificação seria modificada para uso com sistemas remotos, mas como a questão se refere a como usar as opções rsync
, em vez do shell script básico, essa alteração não faz parte desse exemplo.
A terceira opção seria útil se um estendesse o script para mostrar = para arquivos inalterados. Mas não tenho utilidade prática para isso: deixe isso como um exercício para o leitor.