rsync imprime" skipping non-regular file " pour ce qui semble être un répertoire régulier
je sauvegarde mes fichiers en utilisant rsync. Juste après une synchronisation, Je l'ai lancé en m'attendant à ne rien voir, mais au lieu de ça, il avait l'air de sauter des répertoires. J'ai (évidemment) changé de nom, mais je crois que j'ai quand même saisi toutes les informations que j'ai pu. Ce qui 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 synchroniser (attendons pas de changements):
$ 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 ce qui est curieux:
$ 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 il a travaillé:
$ 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 encore:
$ 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. Les autres répertoires ont des espaces et n'ont aucun problème. Je "stat" - ed et ne vois aucune différence entre les annuaires qui ne rsync et ceux qui le font.
si vous avez besoin de plus d'information, il suffit de demander.
5 réponses
Êtes-vous absolument sûr que ces fichiers les liens symboliques ne sont-ils pas?
Rsync a quelques drapeaux utiles tels que -l
"copier les liens symboliques comme liens symboliques". L'ajout d' -l
à votre commandement:
rsync -rtvpl /source/backup /destination
je crois que les liens symboliques sont omis par défaut parce qu'ils peuvent être un risque de sécurité. Consultez la page de manuel ou --help pour plus d'informations sur ceci:
rsync --help | grep link
pour vérifier ce sont des liens symboliques ou pro-activement pour trouver des liens symboliques, vous pouvez utiliser le fichier ou trouver:
$ file /path/to/file
/path/to/file: symbolic link to `/path/file`
$ find /path -type l
/path/to/file
Êtes-vous absolument sûr que ce n'est pas un répertoire de liens symboliques?
a:
file /source/backup/myfiles/foo
pour vous assurer que c'est un répertoire
aussi, il pourrait très bien être un mont de loopback essayez
mount
et assurez-vous que /source/backup/myfiles/foo ne figure pas dans la liste.
Vous devriez essayer la commande ci-dessous, plus probablement, il va travailler pour vous:
rsync -ravz /source/backup /destination
Vous pouvez essayer ce qui suit, il va fonctionner
rsync -rtvp /source/backup /destination
personnellement j'utilise toujours cette syntaxe dans mon script et je travaille un treat pour sauvegarder le système d'entrée (skipping sys / * & proc / * nfs4/*)
sudo rsync --delete --stats --exclude-from $EXCLUDE -rlptgoDv / $TARGET/ | tee -a $LOG
Voici mon script exécuté par le cron de root daily:
#!/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