백업 및 휴대성의 이유로 외부 하드 드라이브에 동기화해야 하는 상당히 큰 디렉터리가 있습니다.
/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