linux - incremental - rsync skipping directory
rsync imprime "omitiendo un archivo no regular" para lo que parece ser un directorio regular (5)
Realizo una copia de seguridad de mis archivos utilizando rsync. Justo después de una sincronización, lo ejecuté esperando ver nada, pero en cambio parecía que se estaba saltando directorios. (Obviamente) he cambiado los nombres, pero creo que todavía he capturado toda la información que pude. ¿Que esta pasando aqui?
$ 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
Luego sincronizo (sin esperar cambios):
$ 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"
Y aquí está la parte rara:
$ 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"
Así funcionó:
$ 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
pero aún:
$ 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"
Otras notas:
Mis directorios reales "foo" y "bar" tienen espacios, pero no otros caracteres extraños. Otros directorios tienen espacios y no tienen problema. Me di cuenta y no vi diferencias entre los directorios que no funcionan con rsync y los que sí lo hacen.
Si necesitas más información, solo pregunta.
¿Está absolutamente seguro de que esos archivos individuales no son enlaces simbólicos?
Rsync tiene algunos indicadores útiles como -l
que "copiarán enlaces simbólicos como enlaces simbólicos". Añadiendo -l
a tu comando:
rsync -rtvpl /source/backup /destination
Creo que los enlaces simbólicos se omiten por defecto porque pueden ser un riesgo de seguridad. Consulte la página del manual o --help para obtener más información sobre esto:
rsync --help | grep link
Para verificar que estos son enlaces simbólicos o proactivamente para encontrar enlaces simbólicos, puede usar el archivo o encontrar :
$ file /path/to/file
/path/to/file: symbolic link to `/path/file`
$ find /path -type l
/path/to/file
¿Está absolutamente seguro de que no es un directorio de enlace simbólico?
prueba un
file /source/backup/myfiles/foo
para asegurarse de que es un directorio
Además, podría ser un intento de montaje en bucle invertido
mount
y asegúrese de que / source / backup / myfiles / foo no esté en la lista.
Debes probar el siguiente comando, lo más probable es que funcione para ti:
rsync -ravz /source/backup /destination
Personalmente siempre uso esta sintaxis en mi script y funciona para hacer una copia de seguridad del sistema intire (omitiendo sys / * & proc / * nfs4 / *)
sudo rsync --delete --stats --exclude-from $EXCLUDE -rlptgoDv / $TARGET/ | tee -a $LOG
Aquí está mi script ejecutado por el cron de root diariamente:
#!/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
Puedes probar lo siguiente, funcionará.
rsync -rtvp /source/backup /destination