소유자 및 특정 소유자의 그룹만 변경

소유자 및 특정 소유자의 그룹만 변경

어리석고 간단한 질문에 대해 사과드립니다. 하지만 웹과 SE를 검색한 후에도 이 특정 질문에 대한 답변을 찾을 수 없습니다.

질문:
소유자 및 그룹을 변경하는 방법(시스템 전체)오직소유자가 소유한 파일의 경우특정한소유자?

사용 사례: 다양한 서버로 실행되고 이를 백업하는
데 사용되는 다수의 RasPi가 있습니다 . rsync예를 들어 불행하게도 복구를 수행해야 했을 때 모든 "사용자" 파일의 소유자와 그룹은 pi:pi원래 소유자가 아닌 이었습니다.adminuser:adminuser

소유한 파일을 찾지 않고 pi소유자/그룹 재할당을 수행할 수 있는 방법이 있습니까 ?

편집: rsync 명령은 다음과 같습니다.

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --exclude-from="${exc_path}" "${src_path}" "${dst_addr}:${dst_path}"

답변1

백업(및 복구)을 위해 -numeric-ids및/또는 사용하고 있지 않습니다 . 명령을 약간 -fake-super수정하면 rsync매핑이 올바르게 저장되고 복원됩니다.

이 예에서는 연결의 원격 측에서 다음 옵션인 위조를 적용하도록 -M지시됩니다 . rsync추가된 부작용은 원격 측(백업이 저장된 곳)이 루트로 실행될 필요가 없다는 것입니다.

그러면 클라이언트에서 백업 서버로 백업이 푸시됩니다.

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids -M--fake-super --exclude-from="${exc_path}" "${src_path}" "${dst_addr}:${dst_path}"

이렇게 하면 클라이언트에서 백업(예: 복원)이 추출됩니다.

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids -M--fake-super --exclude-from="${exc_path}" "${dst_addr}:${dst_path}" "${src_path}"

이는 백업 서버에서 실행되며 백업을 클라이언트에 푸시합니다(예: 복원).

sudo rsync -azh -e 'ssh -pNNNN' --stats --delete --numeric-ids --fake-super "${dst_path}" "${src_host}:${src_path}"

답변2

각 파일은 소유자 정보를 개별적으로 저장하며 소유자를 기준으로 파일을 색인화하는 데이터 구조가 없습니다. 따라서 무엇을 하든 이러한 파일을 찾아 각 파일의 UID를 개별적으로 변경해야 합니다. 다행히도 이것은 어렵지 않습니다. 이렇게 해야 합니다:

find "$dir" -user olduser -exec chown newuser {} +

물론, 특히 여러 사용자에게 속한 파일을 백업하는 경우 올바른 UID를 저장(및 복원)하도록 백업 시스템을 변경하는 것이 좋습니다.

관련 정보