tar --one-file-systemを使用して/ devを含めるか追加する方法

tar --one-file-systemを使用して/ devを含めるか追加する方法

次のコマンドを使用して、完全なリモートファイルシステムでtarを実行しています。

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

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

答え1

含めるパス名に追加します。

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もう必要ない理由です。この構造には他のファイルシステムはありません。

答え2

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

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

--one-file-system他のファイルシステムのディレクトリへの再帰のみを防ぎます。他のファイルシステムのファイル/ディレクトリをtarの引数として直接一覧表示できます。

関連情報