tar를 사용하여 파일 시스템을 복원하면 로그인 루프가 발생함

tar를 사용하여 파일 시스템을 복원하면 로그인 루프가 발생함

참고: 저는 Linux에 대해 더 자세히 알아보기 위해 이 작업을 수행하고 있습니다. 간단한 인터페이스로 사용할 수 있는 다른 도구가 있다는 것을 알고 있습니다.

참고: 저는 Fedora 23을 사용하고 있습니다. SSD에 물리적으로 설치했으며 목표는 이를 가상 머신으로 옮기는 것입니다.

이전에는 tar로 성공했습니다 rsync. rsync전체 파일 시스템을 ext4. 그 후 광산을 업데이트하고 fstabgrub을 다시 설치하고 grub 구성 파일을 생성하고 마지막으로 다음을 initramfs사용하여 새 파일을 생성했습니다.dracut

이제 시스템 백업을 단일 아카이브 파일에 저장하고 압축할 수 있도록 tar를 사용하고 싶습니다.

다음 명령을 사용하여 tar를 생성합니다. tar -czpf /path/to/backup.tar.gz /path/to/fs/

보관 중인 FS의 경로는 임시 디렉터리에 동기화 중인 파일과 동일합니다. proc, dev, sys와 같은 폴더는 포함되지 않습니다 .

그런 다음 livecd를 사용하여 가상 머신을 시작하고 파티션을 마운트한 다음 다음을 root사용하여 tar를 사용자로 추출했습니다.

tar -xzpf /path/to/backup/file -C /path/to/new/partition

rsync로 동일한 파일을 업데이트하면 재부팅하고 로그인 화면으로 이동합니다. 그러나 루트(tty 사용) 또는 내 사용자로 로그인하면 작동하지 않습니다. 단지 로그인 화면으로 돌아가게 됩니다. 로그인 루프에 갇혔습니다.

나는 tar가 소유한 파일을 추출할 때 amoghrabi사용자를 로 대체한다는 것을 발견했습니다. 이는 tar가 사용자와 일치하기 위해 liveuser파일 시스템의 파일을 사용하기 때문입니다 . passwd사용자 이름을 찾을 수 없으면 UID및 로 일치 합니다 GID.

passwd가능한 해결책으로 라이브 시스템의 파일과 group파일을 원본 파일 시스템의 파일로 업데이트해 보았습니다 . 이것은 작동하지 않습니다.

flag 사용에 대해 읽었 지만 내 경우에는 livecd 파일 시스템의 파일에 복원 중인 시스템의 원래 사용자가 포함되어 있지 않기 --same-owner때문에 작동하지 않습니다 .passwd

rsync를 사용하는 것과 같이 시스템을 성공적으로 복원하려면 어떤 옵션이 있어야 합니까?

편집하다:

혼란을 피하기 위해 liveCD에서 부팅하고 /dev/sda1백업을 복원하려는 파티션을 마운트했습니다. 해당 파티션에 백업을 추출한 다음 루트를 변경하여(여전히 liveCD 환경에서) 파일을 수정하고 /etc/fstab, 다시 설치하고 grub, 다시 빌드했습니다 . initramfs백업 압축 풀기 프로세스를 완료한 후 /dev/sda1내 백업에 있는 사용자가 더 이상 자신의 파일을 소유하지 않는 것 같습니다 amoghrabi(즉, /home/amoghrabi/파일이 의 소유입니다 . 이는 liveCD의 파일이 이미 와 동일한 UID를 갖고 있기 liveuser때문이라고 생각합니다 ./etc/passwd1000amoghrabi

이 상황에서 나는 무엇을 할 수 있습니까? 백업 압축을 풀기 전에 파일을 liveCD 환경으로 복원해 보았습니다 /etc/passwd. 이를 통해 /etc/group사용자의 홈 디렉터리가 속한 문제가 해결되었지만 여전히 로그인 루프에 갇혀 있습니다. 이는 압축 해제 프로세스 중에 올바른 권한이 없기 때문이라고 생각됩니다.amoghrabiamoghrabi

나의 궁극적인 목표는 부팅하여 /dev/sda1시스템의 작업 복사본을 갖고 이를 사용하여 tar백업을 저장하는 것입니다.

답변1

--numeric-owner아카이브를 만들거나 아카이브를 추출할 때(또는 둘 다) 옵션을 tar에 전달합니다. 이렇게 하면 추출 중인 시스템의 사용자 이름에 관계없이 파일이 보관되었을 때와 동일한 UID 및 GID를 사용하여 파일이 추출됩니다. 다른 데이터베이스와 함께 사용자 데이터베이스를 복원하므로 이러한 파일은 결국 복원된 시스템의 올바른 사용자가 소유하게 됩니다.

Live CD에서 복원된 백업을 보면 사용자가 다른 이름으로 나타나는 것이 정상입니다. 파일 시스템에서 사용자를 식별하는 것은 사용자 이름이 아닌 숫자 사용자 ID입니다. 사용자 ID는 liveuser실제 사용자 범위의 첫 번째 숫자입니다. amoghrabi설치 중 또는 설치 후에 생성된 첫 번째 사용자인 경우 사용자 ID는 동일한 숫자일 수 있습니다. Fedora는 UID 500으로 시작했다고 생각하므로 그 안의 파일은 /home/amoghrabiUID 500이 소유합니다. Live CD를 보면 사용자 500의 이름은 입니다 liveuser. 원래 시스템인지 복원된 시스템인지 판단해 보면 사용자 500의 이름은 입니다 amoghrabi.

Live CD에서 복원된 백업을 사용하려면 chroot 이상의 작업을 수행해야 합니다. 여러 파일 시스템을 마운트해야 합니다(chroot 외에 루트로 수행).

mount --rbind /dev /media/sda1/dev
mount --rbind /proc /media/sda1/proc
mount --rbind /sys /media/sda1/sys
mount -t tmpfs tmpfs /media/sda1/run
mount -t tmpfs tmpfs /media/sda1/tmp

GUI 로그인에서 GUI 세션을 실행하려면 chroot에서 디스플레이 관리자를 시작하십시오. chroot에서 몇 가지 추가 서비스를 시작해야 할 수도 있습니다. 이에 대해서는 잘 모르겠습니다.

답변2

문제의 일부가 tar모든 특수 파일을 포착하지 못하는지 궁금합니다. 사용되는 것을 보셨나요 dd?

관련 정보