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


42

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

mv :`/home/blah/backup/pgsql.tar.gz '에 대한 소유권을 유지하지 못했습니다 : 작업이 허용되지 않습니다

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

백업 파일은 1MiB에서 5GiB까지 가능하며 NFS를 통해 전송됩니다.


연결된 NTFS 장치에서도 발생하지만 이것이 유일한 것은 아닙니다. 모든 경우에 사용 권한을 변경할 권한이 없거나 NTFS와 같이 가능하지 않은 경우에 발생합니다.
Nux

권한 오류로 인해 (예 : 파일이 마운트되어 있기 때문에) 이동되지 않는 파일을 이동하려고 할 때 유용합니다 cifs.
Sridhar Sarnobat가

답변:


56

mv이 작업에 대한 잘못된 도구입니다. 당신이 원하는 cp다음 rm. 파일을 다른 파일 시스템으로 옮기고 있기 때문에 파일 권한 비트와 소유자 / 그룹 정보를 보존하려는 mv경우를 제외하고 는 정확히이 작업 을 수행 mv합니다. 이는 mv동일한 파일 시스템 내에서 파일을 이동하고 mv두 상황에서 동일한 방식으로 작동하려고 하면 해당 정보를 보존 하기 때문 입니다 . 파일 권한 비트 및 소유자 / 그룹 정보의 보존에 신경 쓰지 않으므로 해당 도구를 사용하지 마십시오. 사용 cp --no-preserve=mode하고 rm대신.


5
고마워요. 종료 : cp --no-preserve=mode,ownership $backupfile $destination종료 코드를 확인한 다음 rm $backupfile모든 것이 정상인지 확인하십시오 .
Nux

22

동일한 파일 시스템 내에서 파일을 이동하면 파일을 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"

rsync솔루션은 훌륭하게 작동합니다. CIFS 공유에서 이전 우분투 설치를 전송하려고 애 쓰고 있습니다. 내 rsync가 파일 이동 실패를보고하지 않았지만 파일을 이동하지 않았으며 권한 문제 만보고했습니다.
Sridhar Sarnobat가

rsync솔루션 +1 !
MikeSchinkel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.