문제는 파일을 이동할 때 오류를 볼 수 있지만 권한 문제와 관련된 오류는 볼 수 없다는 것입니다. 즉, 파일이 완전히 전송되지 않았지만 다음과 같은 오류를보고 싶지는 않습니다.
mv :`/home/blah/backup/pgsql.tar.gz ‘에 대한 소유권을 유지하지 못했습니다 : 작업이 허용되지 않습니다
그래서 나는 다음과 같은 것을 원한다 mv $backupfile $destination --ignore-permissions
.
백업 파일은 1MiB에서 5GiB까지 가능하며 NFS를 통해 전송됩니다.
답변
mv
이 작업에 대한 잘못된 도구입니다. 당신이 원하는 cp
다음 rm
. 파일을 다른 파일 시스템으로 옮기고 있기 때문에 파일 권한 비트와 소유자 / 그룹 정보를 보존하려는 mv
경우를 제외하고 는 정확히이 작업 을 수행 mv
합니다. 이는 mv
동일한 파일 시스템 내에서 파일을 이동하고 mv
두 상황에서 동일한 방식으로 작동하려고 하면 해당 정보를 보존 하기 때문 입니다 . 파일 권한 비트 및 소유자 / 그룹 정보의 보존에 신경 쓰지 않으므로 해당 도구를 사용하지 마십시오. 사용 cp --no-preserve=mode
하고 rm
대신.
답변
동일한 파일 시스템 내에서 파일을 이동하면 파일을 mv
이전 위치에서 분리하여 새 위치에 첨부합니다. 권한과 같은 메타 데이터는 동일하게 유지됩니다. 파일을 다른 파일 시스템으로 이동하면 파일을 mv
복사하고 가능한 많은 메타 데이터를 복제하려고 시도하고 원본을 제거합니다.
다른 파일 시스템으로 이동하고 많은 메타 데이터를 복제하지 않으려는 경우 파일을 복사 한 다음 원본을 제거 할 수도 있습니다.
cp "$backupfile" "$destination" && rm "$backupfile"
이렇게하면 파일의 사용 권한이 어느 정도 유지됩니다 (예 : 세계 가독성, 실행 가능성). 파일 수정 시간이 유지되지 않습니다. 함께 GNUcp
, 당신은 사용할 수있는 --preserve=…
메타 데이터 예를 들어, 더 정교하게 복제되는 것을 contol하는 옵션을 --preserve=mode,timestamps
.
rsync
보존하고 싶은 것을 사용 하고 말해 줄 수도 있습니다 . 이 옵션 -a
은 루트로만 실행하는 경우 소유자를 포함하는“대부분의 메타 데이터 유지”를 의미합니다.
rsync -a --no-owner --no-group --remove-source-files "$backupfile" "$destination"