it-swarm-ko.tech

rsync는 일반 디렉토리 인 것처럼 보이는 "비정규 파일 건너 뛰기"를 인쇄합니다

Rsync를 사용하여 파일을 백업합니다. 동기화 직후, 아무것도 보지 않고 실행했지만 대신 디렉토리를 건너 뛰는 것처럼 보였습니다. 나는 (명확하게) 이름을 바꾸었지만, 여전히 내가 할 수있는 모든 정보를 포착했다고 생각합니다. 여기서 무슨 일이야?

$ 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

그런 다음 동기화합니다 (변경 사항 없음).

$ 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"

그리고 여기 이상한 부분이 있습니다 :

$ 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"

그래서 작동했습니다 :

$ 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

그러나 여전히 :

$ 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"

기타 참고 사항 :

내 실제 디렉토리 "foo"와 "bar"에는 공백이 있지만 다른 이상한 문자는 없습니다. 다른 디렉토리에는 공백이 있으며 문제가 없습니다. 나는 'stat'-ed하고 rsync하지 않는 디렉토리와 그렇지 않은 디렉토리 사이에 차이점을 보지 못했습니다.

더 자세한 정보가 필요하면 물어보십시오.

32
Richard

이러한 개별 files가 심볼릭 링크가 아닌지 확실합니까?

Rsync에는 -l와 같은 몇 가지 유용한 플래그가 있습니다.이 플래그는 "symlinks를 symlinks로 복사합니다". 명령에 -l 추가 :

rsync -rtvpl /source/backup /destination

보안 링크 일 수 있으므로 심볼릭 링크는 기본적으로 건너 뜁니다. 자세한 내용은 매뉴얼 페이지 또는 --help를 확인하십시오.

rsync --help | grep link

이러한 링크가 심볼릭 링크인지 확인하거나 사전에 심볼릭 링크를 찾으려면 file 또는 find를 사용할 수 있습니다.

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

그것이 심볼릭 링크 디렉토리가 아님을 절대적으로 확신합니까?

시도하십시오 :

file /source/backup/myfiles/foo

그것이 디렉토리인지 확인하기 위해

또한 루프백 마운트 시도가 될 수 있습니다.

mount

/ source/backup/myfiles/foo가 나열되어 있지 않은지 확인하십시오.

4
Gauthic

아래 명령을 시도해야 할 것입니다.

rsync -ravz /source/backup /destination
1
mSatyam

다음을 시도해 볼 수 있습니다.

rsync -rtvp /source/backup /destination
0
Premjith

나는 개인적으로 항상 내 스크립트 에서이 구문을 사용하고 intire 시스템을 백업하기 위해 치료를합니다 (sys/* & proc/* nfs4/* 건너 뛰기)

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

다음은 매일 루트 크론에 의해 실행되는 스크립트입니다.

#!/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
user3025039