如何将大文件拆分成较小的文件?
我怎样才能通过pssh
我如何将这些文件放回客户端计算机并将它们重新组合为原始文件?
答案1
您可以使用split
Linux 中的实用程序根据大小或行数来分割文件。
split——将文件拆分成几部分
`split [OPTION]... [INPUT [PREFIX]]`
解释:
- 将固定大小的 INPUT 片段输出到 PREFIXaa、PREFIXab、...;默认大小为 1000 行,默认 PREFIX 为“x”。如果没有 INPUT,或者 INPUT 为 -,则读取标准输入。
选项:
- -a, --后缀长度=N
use suffixes of length N (default 2)
- -b, --bytes=大小
put SIZE bytes per output file
- -C, --line-bytes=大小
put at most SIZE bytes of lines per output file
- -d, --数字后缀
use numeric suffixes instead of alphabetic
- -l, --lines=NUMBER
put NUMBER lines per output file
- --详细
print a diagnostic just before each output file is opened
- - 帮助
display this help and exit
- - 版本
output version information and exit
SIZE 可能是(或者可能是可选后跟的整数)下列之一:KB 1000、K 1024、MB 1000*1000、M 1024*1024,等等(对于 G、T、P、E、Z、Y)。*
例子:
$ split --bytes 500M --numeric-suffixes --suffix-length=3 abc abc.
(其中输入文件名是 abc,最后一个参数是输出前缀)
- 与简短选项相同:
$ split -b 100k -d -a 3 abc abc.
分割命令生成名为:abc.000、abc.001... 的片段
要重新组装生成的部分,您可以使用例如:
$ cat abc.* > abc_2
(假设 shell 对 shell 通配符的结果进行排序 - 并且各部分的数量不超过系统相关的参数限制)
您可以通过以下方式比较结果:
$ cmp abc abc_2 $ echo $?
(输出应为 0)
或者,您可以结合使用 find/sort/xargs 来重新组装各个部分:
$ find -maxdepth 1 -type f -name 'abc.*' | sort | xargs cat > abc_3
- 您也可以做类似的事,但它将创建名为 xaa xab xac... 的包含 3000 行的文件:
$split -l 3000 filename
- 另一个选项是,按输出文件的大小进行拆分(仍然按换行符拆分):
$split -C 50m --numeric-suffixes input_filename output_prefix
创建类似 output_prefix01 output_prefix02 output_prefix03 的文件...每个文件的最大大小为 50 兆字节。
噓:
[feddy@localhost ~]$ pscp.pssh --help
Usage: pscp.pssh [OPTIONS] local remote
Options:
--version show program's version number and exit
--help show this help message and exit
-h HOST_FILE, --hosts=HOST_FILE
hosts file (each line "[user@]host[:port]")
-H HOST_STRING, --host=HOST_STRING
additional host entries ("[user@]host[:port]")
-l USER, --user=USER username (OPTIONAL)
-p PAR, --par=PAR max number of parallel threads (OPTIONAL)
-o OUTDIR, --outdir=OUTDIR
output directory for stdout files (OPTIONAL)
-e ERRDIR, --errdir=ERRDIR
output directory for stderr files (OPTIONAL)
-t TIMEOUT, --timeout=TIMEOUT
timeout (secs) (0 = no timeout) per host (OPTIONAL)
-O OPTION, --option=OPTION
SSH option (OPTIONAL)
-v, --verbose turn on warning and diagnostic messages (OPTIONAL)
-A, --askpass Ask for a password (OPTIONAL)
-x ARGS, --extra-args=ARGS
Extra command-line arguments, with processing for
spaces, quotes, and backslashes
-X ARG, --extra-arg=ARG
Extra command-line argument
-r, --recursive recusively copy directories (OPTIONAL)
Example: pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt
示例(针对您的情况):
[feddy@localhost ~]$ touch ko001 ko002 ko003
[feddy@localhost ~]$ pscp.pssh -AH feddy@localhost ko00* Downloads/
Warning: do not enter your password if anyone else has superuser privileges or access to your account.
Password:
[1] 20:26:42 [SUCCESS] feddy@localhost
[feddy@localhost ~]$ ls Downloads/
ko001 ko002 ko003
现在,最后,您可以使用cat
或find
实用程序来合并或重新组合所有文件(如上所述)