rsync를 사용하여 디렉터리 간에 파일을 이동(복사 아님)하시겠습니까?

rsync를 사용하여 디렉터리 간에 파일을 이동(복사 아님)하시겠습니까?

나는 사용해왔다동기화잠시 동안 파일을 복사하십시오. 내 이해는동기화비교하다CP전송할 파일 중 일부가 이미 대상 디렉터리에 있는 경우 증분 차이(예: "델타")만 전송됩니다.

이것이 맞다면 그것을 사용하면 어떤 이점이 있습니까?동기화폴더 내용 이동, 즉 폴더입니다.두번째, 그리고두번째비어 있나요?

폴더1TB에 가까운 데이터(수백만 개의 파일)가 있습니다. 이전은 다음을 통해 현지에서 이루어집니다.회로망(그리고두번째~이다다른파일 시스템, 둘 다설치됨예를 들어 슈퍼컴퓨터에서는네트워크 파일 시스템그리고두번째광택).

그 외에도 어떤 플래그를 사용하여 물어봐야 할까요?동기화다음 위치에서 파일 이동(복사 아님)도착하다두번째(즉, 삭제언제 전송이 성공적으로 완료되나요?

답변1

--remove-source-files파일을 복사하는 대신 rsync에 전달하여 파일을 이동할 수 있습니다 .

그러나 귀하의 경우 대상이 비어 ​​있기 때문에 rsync를 사용할 필요가 없습니다. Pingyuan은 mv가능한 한 빨리 이 작업을 완료할 것입니다.

귀하의 경우 NFS, Samba, sshfs, sftp, rsync over ssh, tar 파이핑 to ssh 등 중에서 선택할 수 있는 경우 네트워크 프로토콜 선택이 성능에 영향을 미칠 수 있습니다. 이러한 방법의 상대 속도는 파일 크기, 네트워크 및 디스크 대역폭, 기타 요인에 따라 달라지므로 일반적인 권장 사항은 제공할 수 없으며 자체 벤치마크를 실행해야 합니다.

답변2

디렉터리는 삭제되지 않으므로 --remove-source-files다음 명령을 실행합니다.이동하다SSH를 통한 파일:

rsync -avzh --remove-source-files --progress /source/ user@server:/target \
&&  find /source -type d -empty -delete

--progress이 전송을 수동으로 수행하기 때문에 개인적으로 이 기능을 좋아합니다 . 스크립트를 사용하는 경우 이를 제거하세요. 전송 속도가 약간 느려질 것으로 예상했습니다. 이 명령의 삭제 옵션은 빈 디렉터리만 삭제합니다 . 파일이 전송되지 않으면 비어 있지 않은 디렉터리가 삭제될 수 있으므로 find사용하지 마세요 . rm -rf이 옵션은 "맨 아래"에서 위쪽으로 빈 디렉터리 트리를 제거하는 옵션을 -delete켭니다 .-depth

답변3

일반적으로 다음과 같이자일스는 말한다동일한 작업을 더 간단하게 수행할 수 있고 공통 파일 시스템 간에 잠재적인 속도 향상이 없을 때 파일 이동을 사용해도 rsync이점이 없습니다 .mv

그러나 때로는 장점이 있습니다. 특히 rsync원본, 대상 또는 작업을 수행하는 기계의 안정성이 의심되는 경우 복원 기능을 사용할 수 있습니다. 전송 규모가 매우 크고 그리드를 신뢰할 수 없는 경우 이는 상당한 이점이 될 수 있습니다. rsync를 사용하는 것은 오류 발생 시 데이터 손상을 방지하고 중단한 부분부터 계속할 수 있는 보다 안정적인 방법입니다.

답변4

네가 원한다면재귀 병합디렉토리... 디렉토리를 다른 디렉토리로 이동합니다.복사디렉터리 이름, 그러면 내 답변을 참조하세요.여기serverfault.com에서. mv동일한 이름의 디렉터리가 존재하고 rsync각 파일을 이동하는 대신(메타데이터만 읽고 쓰기만) 복사(전체 데이터 읽기 + 쓰기)하는 경우 제대로 작동하지 않습니다.

관련 정보