単一の大きなファイルを複数の小さなハードドライブにコピーする


1

1200 GBのファイルを1つ入手し、3 500 GBのハードリブを使用してバックアップ/コピーを作成する必要がある場合、Linuxを使用してこれを行う最良の方法は何ですか?


1
RAID以外の3つの他のドライブ間で単一のファイルをバックアップとしてコピーすることは最良のアイデアではありません。これら3つのドライブのいずれかに障害が発生するか、エラーが発生すると、バックアップが破損します。これら3台の500GBドライブを使用して、1GBの保護されたストレージでRAID 5を作成した方が良いでしょう。それから(うまくいけば)1.2TBファイルの圧縮バージョンがそれに適合します。
ケルタリ

回答:


1

単一の1200GB宛先ファイルシステムを必要としないソリューションを次に示します。

dd if=<1200G file> of=<dest disk 1 file> bs=1G count=400
dd if=<1200G file> of=<dest disk 2 file> bs=1G skip=400 count=400
dd if=<1200G file> of=<dest disk 3 file> bs=1G skip=800

この手法を使用すると、ディスク1を接続したり、コピーしたり、切断したり、ディスク2に接続したりすることもできます。

その後、ファイルはと再結合することができますcatまたはddそれ以降:

dd if=<disk 1 file> of=<new 1200G file> bs=1G count=400
dd if=<disk 2 file> of=<new 1200G file> bs=1G seek=400 count=400
dd if=<disk 3 file> of=<new 1200G file> bs=1G seek=800

skipは、コピーを開始するために入力ファイル内の適切な場所を見つけるために使用さseekれ、出力ファイル内の特定の場所にコピーするために使用されることに注意してください。


0

splitコマンドを使用してはどうですか?

Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'.  With no INPUT, or when INPUT
is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -a, --suffix-length=N   use suffixes of length N (default 2)
  -b, --bytes=SIZE        put SIZE bytes per output file
  -C, --line-bytes=SIZE   put at most SIZE bytes of lines per output file
  -d, --numeric-suffixes  use numeric suffixes instead of alphabetic
  -e, --elide-empty-files  do not generate empty output files with `-n'
      --filter=COMMAND    write to shell COMMAND; file name is $FILE
  -l, --lines=NUMBER      put NUMBER lines per output file
  -n, --number=CHUNKS     generate CHUNKS output files.  See below
  -u, --unbuffered        immediately copy input to output with `-n r/...'
      --verbose           print a diagnostic just before each
                            output file is opened
      --help     display this help and exit
      --version  output version information and exit

SIZE is an integer and optional unit (example: 10M is 10*1024*1024).  Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).

CHUNKS may be:
N       split into N files based on size of input
K/N     output Kth of N to stdout
l/N     split into N files without splitting lines
l/K/N   output Kth of N to stdout without splitting lines
r/N     like `l' but use round robin distribution
r/K/N   likewise but only output Kth of N to stdout

各パーツを異なるディレクトリ/ hddに配置するようにsplitに指示するにはどうすればよいですか?分割するために、少なくとも1200 GBの追加の空き領域(単一のhdd上)が必要になるようですが、これはありません。
ズラキス

0

splitコマンドを使用できます。たとえば、端末の書き込みで元の大きなファイルを100 MBの小さなチャンクに分割する場合:

split –bytes=100M /big/file/ /chunks/files/prefix

プレフィックスを使用すると、次を使用して再構成が簡単になります。 cat

cat prefix* > rebuilded.file


各パーツを異なるディレクトリ/ hddに配置するようにsplitに指示するにはどうすればよいですか?分割するために、少なくとも1200 GBの追加の空き領域(単一のhdd上)が必要になるようですが、これはありません。
ズラキス

0

1つのオプションは、3つの物理ドライブすべてにまたがるボリュームグループとボリュームを作成することです。これにより、〜1500Gファイルシステムが作成されます。

これについては、マニュアルページを参照してくださいvgcreate。ただし、ディストリビューションにボリュームグループ操作用のGUIツールが含まれている可能性があります。

これに使用する場合split、3つの部分を保持するために、単一のファイルシステムに1200Gの空きスペースが必要になります。ボリュームグループを使用すると、これは不要になります。ファイルをコピーするだけです。


答えてくれてありがとう。1つのFSに1200GBの空き領域がないため、分割を使用できません。悲しいことに、ドライブを再フォーマットする必要があるため、vgcreateを使用できないため、各hdにいくつかの小さなファイルが既にあります。他のアイデアは?
ズラキス

500Gドライブから小さなファイルをコピーし、再フォーマットします。
マシュールンドバーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.