copy_only_missing? - /B 및 /C에 누락된 경로만 /A에서 /C로 복사합니다. - 간결한 방법

copy_only_missing? - /B 및 /C에 누락된 경로만 /A에서 /C로 복사합니다. - 간결한 방법

다음에서 복사하고 싶습니다./ㅏ에게/씨누락된 경로만/비그리고/씨. (이 경로는 경로이며 원격 위치(예: 를 통해 마운트됨)를 나타낼 수도 있다고 가정하십시오 sshfs.)

궁금해요...루프를 작성하고, 파일 시스템을 반복하고, 파일별로 확인하는 것보다 더 간결한 방법이 있습니까?

트리 디렉토리의 내용 예/ㅏ,/비,/씨:

/ㅏ:

/A/1abc/qwe
/A/2abc/asd
/A/3abc/zxc
/A/4abc/rty

/비:

/A/2abc/asd
/A/3abc/zxc

/씨:

/C/1abc/qwe

예상: 복사할 위치/ㅏ에게/씨유일한 경로 4abc/rty:

/A/4abc/rty -> /C/4abc/rty

실제 사례를 설명하기 위해/ㅏ,/비,/씨, 다음과 같은 시나리오로 이어집니다.

  • 백업을 만들고 일부에서 복사하세요./원천(/ㅏ) 일부에게는/목적지(/비) 및 일부 경로를 복사하지 못했습니다. 그래서 당신은 누락된 것의 사본을 갖고 싶어합니다. 그래서 당신은 찾아/다른_목적지(/씨)이 허용되며 누락된 항목만 복사하려고 합니다. 다음은 복사해야 하는 제한 사항의 예입니다./ㅏ에게/비실패할 수 있음: 디스크가 꽉 찼습니다. 파일 시스템의 제한/비(파일 이름 길이와 같은), 존재하지 않는 동안/씨파일 시스템; 등.

답변1

한 가지 해결책은유니온 마운트B와 C의 쓰기 분기로 C를 사용합니다. 그런 다음 문제는 B+C에 누락된 파일만 A에서 B+C로 복사하는 것으로 줄어듭니다.

rsync -a --ignore-existing /A /B+C

유니온 마운트의 경우 한 가지 가능성은 다음과 같습니다.Unionfs-퓨즈.

unionfs-fuse -o cow /C=RW:/B=RO /B+C

또는 공용체:

mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C 

관련 정보