tarを使用してファイルシステムを復元するとログインループが発生する

tarを使用してファイルシステムを復元するとログインループが発生する

注:私はLinuxについてもっと学ぶためにこれをやっています。単純なインターフェースとして使用できる他のツールがあることを知っています。

注:私はFedora 23を使用しています。 SSDに物理的にインストールし、目標はそれを仮想マシンに移動することです。

以前はtarで成功しましたrsyncrsync全体のファイルシステムをext4。その後、鉱山を更新し、fstabgrubを再インストールし、grub構成ファイルを生成し、最後に次のようにinitramfs新しいファイルを作成しました。dracut

これで、システムバックアップを単一のアーカイブファイルに保存して圧縮できるようにtarを使用したいと思います。

次のコマンドを使用してtarを生成します。 tar -czpf /path/to/backup.tar.gz /path/to/fs/

アーカイブ中のFSへのパスは、一時ディレクトリに同期しているファイルと同じです。proc, dev, sysなどのフォルダは含まれません。

次にlivecdを使用して仮想マシンを起動し、パーティションをマウントし、次を使用してroottarをユーザーとして抽出しました。

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

rsyncで同じファイルを更新すると、再起動してログイン画面に移動します。ただし、root(ttyを使用)または私のユーザーとしてログインしても機能しません。ただログイン画面に戻ります。ログインループに閉じ込められました。

私はtarが所有しているファイルを抽出するときにamoghrabiユーザーをに置き換えることを発見しました。これは、tarがユーザーと一致するためにliveuserファイルシステムのファイルを使用するためです。passwdユーザー名が見つからない場合は、UIDと一致しますGID

passwd可能な解決策として、ライブシステムのファイルとgroupファイルを元のファイルシステムのファイルに更新してみました。これはうまくいきません。

flagの使用について読みましたが、私の場合、livecdファイルシステムのファイルに復元しているシステムの元のユーザーが含まれていない--same-ownerため、機能しません。passwd

rsyncを使用するなど、システムを正常に復元するにはどのようなオプションが必要ですか?

編集する:

混乱を避けるために、liveCDから起動し、/dev/sda1バックアップを復元したいパーティションをマウントしました。そのパーティションにバックアップを抽出し、ルートを変更して(まだliveCD環境で)ファイルを変更し、再インストールし/etc/fstabgrub再構築しました。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に加えてrootとして実行)。

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でいくつかの追加サービスを開始する必要があるかもしれません。これについてはよくわかりません。

おすすめ記事