chrooted tarを作成する方法は?

chrooted tarを作成する方法は?

chrootのすべてをキャプチャしたいのですが、完全なファイルシステム/保護者権限などを見るには、まずchrootに入る必要があるかどうかわかりません。 chrootの外から見ると、ルートのホームディレクトリを見逃すようです/root。 VMを完全にキャプチャするかのようにchrootを完全にキャプチャする方法は? :

cd ~/mychroot
# Un-mount any previously mounted filesystems first?
# umount /proc
tar -cpzf /tmp/mychroot.tar.gz --one-file-system --exclude=/tmp --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /    cp ~/mychroot/mychoort.tar.gz /path/to/somewhere/safe

sudo chroot ~/mychroot
# Un-mount any previously mounted filesystems first?
tar -cpzf /tmp/mychroot.tar.gz --one-file-system --exclude=/tmp --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev /    # Exit the chroot
exit
cp ~/mychroot/mychroot.tar.gz /path/to/somewhere/safe

ベストアンサー1

tar操作を行うためにchrootする必要はありません。代わりにこのオプションを使用できます--numeric-owner。 Chrootは、tarアーカイブに(正しい)所有者/グループ名を記録する場合にのみ必要です。この場合(/etc/passwdなどがtarの一部である場合)は必ずしも必要ではありません。

また、実際にchrootをせずに先にマウントなどをする必要がないので、/dev面倒なことがなくなります。/proc/sys

オプション--one-file-systemは偽の友達です。すべてのマウントポイントをスキップするため、不完全なtarが生成されます。たとえば、一部のシステムには、/devudevがマウントされる前に存在する静的デバイスノードがあり、システムが起動しない場合があります。

--one-file-systemしたがって、不完全な結果を絶対に望まない限り使用しないでください。

別の方法は、例えばルートパーティションにマウントをバインドすることです。

mkdir /mnt/root
mount --bind / /mnt/root

バインドマウントはサブマウントには付属していないため、静的ノードやその他のコンテンツ(存在する場合)を/mnt/root含むルートファイルシステムの完全なビューを提供します。/dev/煩わしさ--one-file-systemと何十もの--excludeオプションなしで、これらすべてを1つのパッケージに収めることができます。

おすすめ記事