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.
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
Ê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é.
Vous devriez essayer la commande ci-dessous, cela fonctionnera probablement pour vous:
rsync -ravz /source/backup /destination
Vous pouvez essayer ce qui suit, cela fonctionnera
rsync -rtvp /source/backup /destination
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