백업과 휴대성의 이유로 외부 하드 드라이브에 동기화해야 하는 상당히 큰 디렉터리가 있습니다.
/work
이 폴더를 외장 하드 드라이브에 복사하기 위해 다음 rsync 명령을 실행하려고 합니다.
rsync -avz /work /media/extern_drive --max-size '4G'
가 포함된 파일을 복사하지 않는다는 점을 제외하면 잘 작동하는 것 같습니다 :
.
이 게시물은 단일 파일에 대한 솔루션을 제공합니다. rsync: 파일 이름의 콜론, 그러나 문제는 이러한 파일이 너무 많아서 수동으로 수행할 수 없다는 것입니다.
파일 이름에 콜론이 있는 파일을 재귀적으로 재동기화할 수 있는 방법이 있습니까?
답변1
귀하의 외장 드라이브는 파일 이름에 콜론을 허용하지 않는 VFAT와 같은 파일 시스템을 사용하는 것으로 추측됩니다.
zip
간단한 옵션은 파일을 아카이브( , 7z
, tar.xz
, 원하는 대로) 로 백업하는 것입니다 . 이렇게 하면 최대 파일 크기 이외의 파일 시스템 특성에 의해 제한되지 않습니다.
또 다른 가능성은 다음을 사용하는 것입니다.rdiff-백업, 대상 파일 시스템에 맞지 않는 파일 이름을 다음과 같이 번역합니다.제안됨~에 의해수영장.
지원되지 않는 문자에 대한 일반적인 접근 방식은 파일 시스템 계층을 활용하여 파일 이름을 변환하는 것입니다. 그만큼퓨즈파일 시스템포시소블파일 이름을 Windows의 VFAT가 지원하는 이름으로 변환합니다.
mkdir ~/mnt
mount.posixovl -S /media/extern_drive ~/mnt
rsync -a /work ~/mnt
fusermount -u ~/mnt
보다USB 키를 rsync할 때 콜론을 어떻게 대체할 수 있나요?자세한 내용을 알아보고, 나올 수 있는 새로운 솔루션이 있는지 해당 스레드를 확인하세요.
답변2
다음과 같이 이름에 콜론이 있는 파일의 패턴을 명시적으로 포함해 보겠습니다.
$ rsync -avz --include '*:*' /work /media/extern_drive --max-size '4G'
예
$ mkdir 1 2
$ touch 1/file{1..5}
$ touch 1/file:{1..5}
명시적으로 제외
$ rsync -avz --exclude '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5
sent 313 bytes received 114 bytes 854.00 bytes/sec
total size is 0 speedup is 0.00
명시적으로 포함
$ rm -fr 2/*
$ rsync -avz --include '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5
file:1
file:2
file:3
file:4
file:5
sent 573 bytes received 209 bytes 1,564.00 bytes/sec
total size is 0 speedup is 0.00