권한을 유지하지 않고 파일을 이동하는 방법

권한을 유지하지 않고 파일을 이동하는 방법

문제는 파일을 이동할 때 오류는 볼 수 있지만 권한 문제로 인한 오류는 볼 수 없다는 것입니다. 즉, 파일이 완전히 전송되지 않았는지 걱정하지만 다음과 같은 오류는 보고 싶지 않습니다.

mv: '/home/blah/backup/pgsql.tar.gz'의 소유권을 유지할 수 없습니다. 작업이 허용되지 않습니다.

그래서 나는 다음과 같은 것을 원합니다 mv $backupfile $destination --ignore-permissions:

백업 파일은 1MiB에서 5GiB 사이일 수 있으며 NFS를 통해 전송됩니다.

답변1

mvcp그렇다면 원하는 작업에 잘못된 도구입니다 rm. 파일을 다른 파일 시스템으로 이동하는 것이므로 이는 파일 권한 비트와 소유자/그룹 정보를 보존하려고 시도하는 mv것 외에도 뒤에서 수행되는 작업 입니다. 동일한 파일 시스템에서 파일을 이동하고 두 경우 모두 동일한 방식으로 실행하려고 하면 해당 정보가 유지되기 mv때문입니다 . 파일 권한 비트와 소유자/그룹 정보 저장에 관심이 없으므로 이 도구를 사용하지 마십시오. 대신 및 를 사용하세요 .mvmvcp --no-preserve=moderm

답변2

동일한 파일 시스템 내에서 파일을 이동하면 mv파일은 이전 위치에서 분리되고 권한과 같은 메타데이터는 변경되지 않고 새 위치에 첨부됩니다. 파일을 다른 파일 시스템으로 이동하는 경우 mv파일을 복사하고 가능한 한 많은 메타데이터를 복사한 다음 원본 파일을 삭제하십시오.

다른 파일 시스템으로 마이그레이션 중이고 너무 많은 메타데이터를 복사하고 싶지 않으므로 파일을 복사한 다음 원본 파일을 삭제하는 것이 좋습니다.

cp "$backupfile" "$destination" && rm "$backupfile"

이렇게 하면 파일의 권한(예: 전체 가독성, 실행 가능성)이 어느 정도 보존됩니다. 파일 수정 시간은 보존되지 않습니다. 그리고암소 비슷한 일종의 영양cp, 이 --preserve=…옵션을 사용하면 복사되는 메타데이터를 보다 세부적으로 제어할 수 있습니다 --preserve=mode,timestamps.

당신은 또한 rsync당신이 유지하고 싶은 것을 사용하고 말할 수 있습니다. 이 옵션은 -a루트로만 실행하는 경우 소유자를 포함하여 "대부분의 메타데이터 보존"을 의미합니다.

rsync -a --no-owner --no-group --remove-source-files "$backupfile" "$destination"

관련 정보