파일 시스템 간 대략적인 원자 이동?

파일 시스템 간 대략적인 원자 이동?

우분투에서 한 파일 시스템에서 다른 파일 시스템으로 일부 파일을 이동해야 합니다. 그러나 파일이 대상 위치에 부분적이거나 불완전한 파일로 존재하지 않는 것이 매우 중요합니다. 최소한 올바른 파일 이름이 있어야 합니다.

지금까지 내 유일한 해결책은 각 파일을 가져와 대상의 임시 이름에 복사한 다음 대상에서 이름을 원래 파일 이름으로 바꾸고(원자적이어야 한다고 생각함) 마지막으로 원본 파일을 삭제하는 스크립트를 작성하는 것입니다.

그러나 스크립트를 작성하고 디버깅하는 것은 이 작업에 너무 과도한 것 같습니다. 이미 로컬에서 이 작업을 수행하는 방법이나 도구가 있나요?

답변1

rsync임시 파일 이름으로 복사됩니다(예:Rsync 임시 파일 확장자그리고rsync - 전송 중에 임시 파일을 생성합니까?) 이 옵션을 사용하지 않는 한 --inplace. 파일이 성공적으로 전송된 후에만 파일 이름을 바꾸십시오. rsync또한 부분적으로만 전송된 대상 파일도 삭제합니다(예: 디스크 가득 참 또는 기타 오류로 인해).

--remove-source-files소스 파일을 성공적으로 전송한 후 삭제하는 옵션 도 있습니다 . rsync자세한 내용은 매뉴얼 페이지를 참조하십시오.

이 모든 것을 종합하면 다음을 사용할 수 있습니다.

rsync -ax --remove-source-files source/ target/

이 옵션은 "수신" 대기열이나 처리될 유사한 디렉터리에서 파일을 이동하는 등의 작업에 특히 유용합니다.

혹은 일회용 거울이라면 rsync--remove-source-files옵션을 사용하지 않고 그냥 사용하셔도 됩니다. 원하거나 필요한 경우 나중에 소스 파일을 삭제할 수 있습니다.

관련 정보