web-dev-qa-db-fra.com

rsync affiche "le saut du fichier non standard" pour ce qui semble être un répertoire normal

Je sauvegarde mes fichiers en utilisant rsync. Juste après une synchronisation, je l'ai exécuté en m'attendant à ne rien voir, mais il semblait plutôt qu'il sautait des répertoires. J'ai (évidemment) changé de nom, mais je crois avoir encore saisi toutes les informations possibles. Qu'est-ce qu'il se passe ici?

$ ls -l /source/backup/myfiles
drwxr-xr-x 2 me me  4096 2010-10-03 14:00 foo
drwxr-xr-x 2 me me  4096 2011-08-03 23:49 bar
drwxr-xr-x 2 me me  4096 2011-08-18 18:58 baz

$ ls -l /destination/backup/myfiles
drwxr-xr-x 2 me me  4096 2010-10-03 14:00 foo
drwxr-xr-x 2 me me  4096 2011-08-03 23:49 bar
drwxr-xr-x 2 me me  4096 2011-08-18 18:58 baz

$ file /source/backup/myfiles/foo
/source/backup/myfiles/foo/: directory

Puis je synchronise (sans aucun changement):

$ rsync -rtvp /source/backup /destination
sending incremental file list
backup/myfiles
skipping non-regular file "backup/myfiles/foo"
skipping non-regular file "backup/myfiles/bar"

Et voici la partie étrange:

$ echo 'hi' > /source/backup/myfiles/foo/test
$ rsync -rtvp /source/backup /destination
sending incremental file list
backup/myfiles
backup/myfiles/foo
backup/myfiles/foo/test
skipping non-regular file "backup/myfiles/foo"
skipping non-regular file "backup/myfiles/bar"

Donc cela a fonctionné:

$ ls -l /source/backup/myfiles/foo
-rw-r--r-- 1 me me  3126091 2010-06-15 22:22 IMGP1856.JPG
-rw-r--r-- 1 me me  3473038 2010-06-15 22:30 P1010615.JPG
-rw-r--r-- 1 me me        3 2011-08-24 13:53 test

$ ls -l /destination/backup/myfiles/foo
-rw-r--r-- 1 me me  3126091 2010-06-15 22:22 IMGP1856.JPG
-rw-r--r-- 1 me me  3473038 2010-06-15 22:30 P1010615.JPG
-rw-r--r-- 1 me me        3 2011-08-24 13:53 test

mais reste:

$ rsync -rtvp /source/backup /destination
sending incremental file list
backup/myfiles
skipping non-regular file "backup/myfiles/foo"
skipping non-regular file "backup/myfiles/bar"

Autres notes:

Mes répertoires actuels "foo" et "bar" ont des espaces, mais pas d'autres caractères étranges. D'autres répertoires ont des espaces et n'ont pas de problème. J'ai statué et n'ai vu aucune différence entre les répertoires qui ne sont pas rsync et ceux qui le font.

Si vous avez besoin de plus d'informations, il suffit de demander.

29
Richard

Etes-vous absolument sûr que ces fichiers ne sont pas des liens symboliques?

Rsync a quelques indicateurs utiles tels que -l qui "copie les liens symboliques en tant que liens symboliques". Ajout de -l à votre commande:

rsync -rtvpl /source/backup /destination

Je pense que les liens symboliques sont ignorés par défaut car ils peuvent constituer un risque pour la sécurité. Consultez la page de manuel ou --help pour plus d’informations à ce sujet:

rsync --help | grep link

Pour vérifier si ce sont des liens symboliques ou de manière proactive pour trouver des liens symboliques, vous pouvez utiliser fichier ou rechercher :

$ file /path/to/file
/path/to/file: symbolic link to `/path/file`
$ find /path -type l
/path/to/file
41
zaTricky

Êtes-vous absolument sûr que ce n'est pas un répertoire de liens symboliques?

essayez un:

file /source/backup/myfiles/foo

pour s'assurer que c'est un répertoire

En outre, il pourrait très bien s'agir d'un montage en boucle Try

mount

et assurez-vous que/source/backup/myfiles/foo n'est pas répertorié.

4
Gauthic

Vous devriez essayer la commande ci-dessous, cela fonctionnera probablement pour vous:

rsync -ravz /source/backup /destination
1
mSatyam

Vous pouvez essayer ce qui suit, cela fonctionnera

rsync -rtvp /source/backup /destination
0
Premjith

Personnellement, j’utilise toujours cette syntaxe dans mon script et travaille avec soin pour sauvegarder le système intire (en sautant sys/* et proc/* nfs4/*)

Sudo rsync --delete --stats  --exclude-from $EXCLUDE -rlptgoDv / $TARGET/ | tee -a $LOG

Voici mon script géré par root's cron tous les jours:

#!/bin/bash
#
NFS="/nfs4"
HOSTNAME=`hostname`
TIMESTAMP=`date "+%Y%m%d_%H%M%S"`
EXCLUDE="/home/gcclinux/Backups/root-rsync.excludes"
TARGET="${NFS}/${HOSTNAME}/SYS"
LOGDIR="${NFS}/${HOSTNAME}/SYS-LOG"
CMD=`/usr/bin/stat -f -L -c %T ${NFS}`

## CHECK IF NFS IS MOUNTED...

if [[ ! $CMD == "nfs" ]];then
    echo "NFS NOT MOUNTED"
    exit 1
fi

## CHECK IF LOG DIRECTORY EXIST

if [ ! -d "$LOGDIR" ]; then
    /bin/mkdir -p $LOGDIR
fi

## CREATE LOG HEADER
LOG=$LOGDIR/"rsync_result."$TIMESTAMP".txt"

echo "-------------------------------------------------------" | tee -a $LOG
echo `date` | tee -a $LOG
echo "" | tee -a $LOG

## START RUNNING BACKUP
/usr/bin/rsync --delete --stats  --exclude-from $EXCLUDE -rlptgoDv / $TARGET/ | tee -a $LOG
0
gcclinux