私は64MBのフラッシュと256MBのRAMを備えたLinuxベースのSTB(セットトップボックス)を持っています。別の画像に更新する前に、いくつかの設定をバックアップしたいのですが、正確にどこにあるのかわかりません。それは後で調べてみると思います。だから私はFTP経由でボックスに接続し、すべてのファイルとフォルダをダウンロードすることにしました。 FTPクライアントでボックスのルートを右クリックし、Windowsデスクトップの専用フォルダにダウンロードすることを選択しました。
ダウンロードは続き、決して止まらないようです。ただし、FTPサーバーによってFTP接続が終了します(ログにそのように表示されているようです)。結局、2.97GBのデータができました。どうやってこれができますか?このデータはどこから来ますか? ...256MB以上を保存できませんか? ! ...
Linuxシステムのルートディレクトリをすぐにコピーし、他のすべてのファイルやフォルダもコピーされると期待できないのはなぜですか?これはWindowsでC:\をコピーするのと同じではありませんか?リアルタイムシステムなのでそうでしょうか? ...最初に閉じるか、ログアウトしてプロセスを停止する必要がありますか?その時は待機モードでしたが…
答え1
STBに保存できるよりも多くのデータを転送するには、少なくとも3つの理由があります。
スパースファイル: ファイルには常にファイルの開始時刻から現在の長さまでの連続したバイト列が含まれているようです。ただし、(通常はバイナリ)ファイルを生成し、特定のバイト範囲のみを書き込むことができます。この場合、これらのバイト範囲の間の穴(記録されていない)を読み取ると、値が0のバイトが含まれているように見えます。ファイルシステムは、ソフトウェアがこれらの「脆弱性」を生成するときに気づきますが、実際にはそれをディスクに保存しません。このようにして1000000バイトのファイルを生成し、999999の場所にシングルバイトを書き込むことができます。ファイルサイズはほぼ1MBですが、ディスク容量は1ブロックしか占めません。
ファイル形式では、ファイルの一部が特定のバイトオフセットにある必要がありますが、すべての内容が入力されない場合は、特定の種類のデータベースまたはインデックスファイルが希薄になる可能性があります。
ファイルレプリケータは、ファイルが開始位置でリーンであることを知らないため、ソースからファイル全体をバイトストリームとして読み込み、同じバイトストリームをターゲットに書き込みます。ファイルのすべてのバイトがターゲットに書き込まれるため、ターゲットのファイルシステムはスパースファイルを生成しません。
データセットのスパースファイルがサイズを増やすと思われる場合は、
--sparse
次のオプションを試してください。同期。ソースに値が0のバイト数が多いたびに、ターゲットにスパースファイルを生成します。 (ソースファイルがあるかどうかはわかりません。実際に希薄かもしれませんが、とにかく目的地では稀になります。 )STBには、1つ以上のスパースファイルを使用して実装できる一種の内部データベースを含めることができます。ソースファイルシステムでは、非常に大きなファイル、特にSTBのストレージ容量よりも大きいファイルを見つけます。それら持つ稀になる。
アイテムは複数の場所にインストールされます。。 STBなどの組み込みシステムは、製造元のソフトウェア配布とユーザーデータの一部である読み取り専用パーティションと読み取り/書き込みパーティションを混在させる可能性があるため、ファイルシステムのレイアウトが奇妙なことがよくあります。これは、Raw Flashのさまざまな種類のファイルシステム用に設計されています。 (ブロックデバイスではありません)、ブートローダパーティション、非常に簡単に工場初期化機能を可能にする共同でマウントされたファイルシステム、RAMディスク(停電時にファイルシステムを損傷することなく正常に動作するため)など...したがって、実際に同じコンテンツは、さまざまな独立した場所にインストールできます(工場出荷時の形式、共同設置、他の目的のためのバンドルの設置など)。
この問題を解決するには、この
df
コマンドが役立ちます。ただし、一部の組み込みシステムメーカーでは、出力で実行されている作業がはっきりしないほど奇妙な作業を行いますdf
。ただし、少なくともどのファイルシステムが存在し、各ファイルシステムがどの程度完全であるかを確認できる必要があります。ハードリンク:FTPはハードリンクを認識しないため、同じファイルに2つのリンクをコピーするように要求すると、ファイルを2回コピーして宛先の2倍のスペースを占有します。ファイルに複数のリンクがある場合、それに応じてリンクが掛けられます。
この問題を解決するには、rsyncの
--hard-links
オプションを試してください。
3つのうち2つのケースでは、rsyncを使用してファイルをコピーすることをお勧めします。これは、STBへのシェルアクセス権があり、rsyncがインストールされているかインストール可能な場合、またはSTBがrsyncをファイル転送プロトコルとして提供している場合にのみ可能です(STBはそうではありませんが、一部のホームNASデバイスでは提供されています)。
利用可能であれば、rsync はあるシステムから別のシステムに大量のデータをコピーする良い方法です。上記の3つの問題のうち2つ(または3つすべてを参照--one-file-system
)を選択的に解決できるだけでなく、中断されたレプリケーションを再開するのにも非常に便利です。
答え2
Windows側では、c:
ドライブだけをコピーするのではなく、ディスクファイルではなくハードウェアデバイスなど、さまざまなファイルをコピーし、一部のファイルを複数回コピーします。ディスク全体の内容とRAMの複数のダンプを含めることができます。
Linuxや他のUNIXシリーズシステムでは、ほとんどすべてがファイルです。通常のファイルとディレクトリに加えて、次のものがあります。シンボリックリンク(他のファイルへのポインタ)とデバイスファイルハードウェアデバイス(ディスク、パーティション、RAM、シリアルポートなど)を表します。ディスクには保存されませんが、アプリケーションがシステムのデータにアクセスできるようにする特別なファイルシステムもあります。/proc
(プロセス)そして/sys
(システムファイルシステム)。
デバイスに/dev
も無限ファイル – 永久に読み取れるファイルです。はい/dev/zero
、これには読みたいヌルバイトがいくつか含まれています。また、/dev/urandom
これには読みたいランダム数のランダムバイトが含まれているため、nランダムバイトを取得するにはnバイトを読み取る必要があります/dev/urandom
。
FTPプログラムを使用してファイルシステムツリー全体を転送する場合は、すべてをコピーしてから取得できるだけのデータをコピーしたり、取得できるだけのデータをコピーしたりする/proc
可能性があります/dev
。
追加資料:
- /devのデバイスファイルは実際に何をしますか?
- 起動可能なUSBの作成、/procコピーの問題
- /procを開いて読むとどうなりますか?
- 一般的なLinuxシステムにはどのマウントポイントがありますか?
FTP以外にSSHコマンドラインなど、デバイスに接続する他の方法がある場合、FTPは特別なファイルを認識しないため、FTPの代わりにその方法を使用してください。コマンドを実行して、df
存在するファイルシステムを確認します。次のコマンドを使用してルートファイルシステムをバックアップできます。
rsync -a -x root@settopbox:/ settopbox.backup
(tell-x
オプションに注意してください。同期このプログラムはファイルシステムにまたがっていません。 )
ルートファイルシステムはバックアップする価値のあるシステムではない可能性があり、一部のデバイスには読み取り専用のルートファイルシステムが設定され、設定を含む他の読み取り/書き込みファイルシステムがあります。コマンドの出力を公開しdf
、mount
バックアップするコマンドを決定するのに役立つ必要がある場合。
またはフラッシュ自体をバックアップしてください。デバイス名を探す必要があります。ブロックデバイス、つまりディスクまたはディスクパーティションに対応するデバイスまたは他の同様のデバイスを見つけるには、次のコマンドを使用します。
find /dev -type b
ls -l /dev /dev/* | grep '^b'
これらのデバイスが何を意味するのかわからない場合は、そのコマンドの出力を公開してください。
答え3
その理由は、Linuxには次のプログラムがあるからです。プロセスファイルシステム
proc
/proc
カーネルデータ構造にインストールされ表現されます。オブジェクトの1つは/proc/kcore
カーネルメモリコアのバイナリイメージです。つまり、システムで使用されるすべてのメモリ仮想メモリを含む。
私のワークステーションの例は次のとおりです。
$ cat /proc/meminfo | grep MemTotal
MemTotal: 3507728 kB
$ ls -lh /proc/kcore
-r-------- 1 root root 128T 2012-09-21 17:24 /proc/kcore
ご覧のとおり、RAMは4GBしかありません。/proc/kcore
巨大だが128TB!これはかなり私よりも多く(約32,000倍)多くのメモリを持っています。