web-dev-qa-db-ja.com

tar--one-file-systemを使用して/ devをインクルードまたは追加する方法

を使用して完全なリモートファイルシステムでtarを実行しています

ssh -n <hostname> 'Sudo tar -cpvzf - --one-file-system /' | cat > Bak.tar.gz

これは私にtarballを与えました。このtarballを使用している別のサービスにインポートしようとしましたが、/devディレクトリが含まれていないようであるため、問題が発生しました。最初のタールの後に--include="/dev"/devのようなことができるかどうか疑問に思っています。ここでいくつかのガイダンスが必要です。

6
kevzettler

アーカイブするファイルのリストに/devを追加するだけです。

ssh -n <hostname> Sudo tar -cpvzf - --one-file-system / /dev > Bak.tar.gz

--one-file-systemは、異なるファイルシステム上のディレクトリへの再発を防ぐだけです。 tarの引数として、さまざまなファイルシステム上のファイル/ディレクトリを直接リストすることもできます。

4

おそらく、含めるパス名に単純に追加することができます。

tar -cf - --one-file-system / /dev/

ただし、動的な/devには、完全に間違っているか無関係なデバイスノードが多すぎるため、これは通常、実際にはまったく必要ありません。

より良い方法(他のマウントによって隠されたファイルを含む、元のルートファイルシステムの完全なコピーを実際に取得するという意味で)は、サブマウントによって妨げられないファイルシステムの別のマウントを作成することであり、それをtar

このようにして、ルートファイルシステムに実際に保存されている/dev/(およびその他すべて)を取得します。これには通常、インストール時に最初に作成された/devノードの標準セットのみが含まれ、システムがその上に動的/dev/をセットアップするまでの起動時にのみ必要です。

mkdir /mnt/root
mount --bind / /mnt/root
cd /mnt/root
tar -cpvzf - .
cd /
umount /mnt/root

mountマンページに記載されているように、バインドマウント呼び出しは単一のファイルシステム(の一部)のみをアタッチし、サブマウントはアタッチできません。そのため、--one-file-systemは不要になりました。この構造の下に他のファイルシステムはありません。

6
frostschutz