を使用して完全なリモートファイルシステムでtarを実行しています
ssh -n <hostname> 'Sudo tar -cpvzf - --one-file-system /' | cat > Bak.tar.gz
これは私にtarballを与えました。このtarballを使用している別のサービスにインポートしようとしましたが、/dev
ディレクトリが含まれていないようであるため、問題が発生しました。最初のタールの後に--include="/dev"
や/dev
のようなことができるかどうか疑問に思っています。ここでいくつかのガイダンスが必要です。
アーカイブするファイルのリストに/dev
を追加するだけです。
ssh -n <hostname> Sudo tar -cpvzf - --one-file-system / /dev > Bak.tar.gz
--one-file-system
は、異なるファイルシステム上のディレクトリへの再発を防ぐだけです。 tarの引数として、さまざまなファイルシステム上のファイル/ディレクトリを直接リストすることもできます。
おそらく、含めるパス名に単純に追加することができます。
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
は不要になりました。この構造の下に他のファイルシステムはありません。