Если я получил один файл размером 1200 ГБ и мне нужно создать резервную копию или скопировать его, используя жесткие диски емкостью 3 500 ГБ, каков наилучший способ сделать это с помощью Linux?
4 ответа
Вот решение, которое не требует единой целевой файловой системы 1200 ГБ.
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
используется для копирования в определенное место в выходном файле.
Вы можете использовать команду split
.
Например, если вы хотите разделить оригинальный большой файл на маленькие кусочки по 100 МБ в терминале, напишите:
split –bytes=100M /big/file/ /chunks/files/prefix
использование префикса облегчает восстановление с помощью cat
cat prefix* > rebuilded.file
Как насчет использования команды 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
Один из вариантов - создать группу томов и том, охватывающий все три физических диска. Это приведет к файловой системе ~ 1500G.
Для этого посмотрите страницу руководства vgcreate
, хотя вполне вероятно, что ваш дистрибутив содержит инструмент с графическим интерфейсом для манипулирования группами томов.
Если вы используете для этого split
, вам понадобится 1200 ГБ свободного места в одной файловой системе для хранения трех частей. Использование группы томов делает это ненужным. Вы просто скопируете файл.