linux下分卷压缩,合并解压的3种方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux下分卷压缩,合并解压的3种⽅法
我们上传东西的时候,由于⽂件过⼤⽽不能上传,或者不给上传,最明显的就是发邮件了,附件最⼤5M,有的10M。
如果超过了就郁闷了。
这个时候,如果能把压缩的东西,分割开来就⽐较爽了,windows下⾯我想⼤家知道怎么分割,利⽤winrar,winzip图型化设置压缩出来的块的⼤⼩。
但是在linux下⾯有没有这样的⽅法了,linux下⾯有rar命令,有zip命令,windows下⾯这⼆种⽅式可以分割压缩,我想linux下⾯绝对也是可以的。
下⾯是我尝试过程的记录:
⼀,rar分卷压缩和合并解压
rar -h
我们会发现以下参数,要创建多⼤的卷。
v Create volumes with size autodetection or list all volumes
v<size>[k,b] Create volumes with size=<size>*1000 [*1024, *1]
查看复制打印?
1. [zhangy@BlackGhost awksed]$ rar a -v5m google.rar Google_Maps_API.doc //-v和5m之
间不要有空格
2.
3. RAR 3.92 Copyright (c) 1993-2010 Alexander Roshal 10 Feb 2010
4. Shareware version Type RAR -? for help
5.
6. Evaluation copy. Please register.
7.
8. Creating archive google.rar
9.
10. Adding Google_Maps_API.doc
11. Calculating the control sum
12.
13. Creating archive google.part2.rar
14.
15. ... Google_Maps_API.doc
16. Calculating the control sum
17.
18. Creating archive google.part3.rar
19.
20. ... Google_Maps_API.doc OK
21. Calculating the control sum
22. Done
23. [zhangy@BlackGhost awksed]$ unrar x google.part1.rar //合并并解压
24.
25. UNRAR 3.90 freeware Copyright (c) 1993-2009 Alexander Roshal
26.
27. Extracting from google.part1.rar
28.
29. Extracting Google_Maps_API.doc
30.
31. Extracting from google.part2.rar
32.
33. ... Google_Maps_API.doc 76%
34.
35. Extracting from google.part3.rar
36.
37. ... Google_Maps_API.doc OK
38. All OK
⼆,zip分卷压缩和合并解压
zip -h2
你会发现,分卷参数-s,意思是说分割成多⼤的卷
Splits (archives created as a set of split files):
-s ssize create split archive with splits of size ssize,where ssize nm
n number and m multiplier (kmgt, default m), 100k -> 100 kB
下⾯的意思是说如果是分卷的了,⽤ -s 0 --out把分卷合成⼀个
If input is split, output will default to same split size
Use -s=0 or -s- to turn off splitting to convert split to single file:
zip in_split_archive -s 0 --out out_single_file_archive
⽤zip来分卷压缩时,他必须是.zip的形势,他的流程是这样的,先把⼀般⽂件压缩成.zip的⽂件,然后在将.zip的⽂件分成多少块,如果你不这样坐呢,会提⽰错误的。
[zhangy@BlackGhost awksed]$ zip -s 4m Google_Maps_API.doc
zip error: Invalid command arguments (archive name must end in .zip for splits)
查看复制打印?
1. [zhangy@BlackGhost awksed]$ zip google.zip Google_Maps_API.doc //先压缩不然就报
上⾯的错
2. adding: Google_Maps_API.doc(deflated 12%)
3. [zhangy@BlackGhost awksed]$ zip -s 4m google.zip --out ziptest //分卷
4. copying: Google_Maps_API.doc
5. [zhangy@BlackGhost awksed]$ zip ziptest -s 0 --out google_bak.zip //这样合卷有问题
6. copying: Google_Maps_API.doc
7. [zhangy@BlackGhost awksed]$ cat ziptest.z* > google_bak.zip //利⽤cat来合卷
8. [zhangy@BlackGhost awksed]$ unzip google_bak.zip //解压
上⾯呢⽤zip来分卷是没有问题的,但是合卷的时候就有问题了,zip -s 0 --out这样的⽅式,合出来的卷,⼤约只有分卷前的⼀半,这就搞的我很⽆语了,并且解压的时候,提⽰我输⼊密码,在次⽆语,只好有cat来合并了,还好合并后,解压没有任何问题。
三,利⽤split来分卷,cat来合并分卷
我花了很长时间去研究tar的参数,研究了好长时间,还是没有找到可以分卷的参数,英语还是不过关啊,唉。
不过我们可以借助split来分卷
1. [zhangy@BlackGhost awksed]$ tar czvf google.tar.gz Google_Maps_API.doc
2. Google_Maps_API.doc
3. [zhangy@BlackGhost awksed]$ split -d -b 4m google.tar.gz
4. [zhangy@BlackGhost awksed]$ cat x* > google_bak.tar.gz
5. [zhangy@BlackGhost awksed]$ tar zxvf google_bak.tar.gz
6. Google_Maps_API.doc
分卷压缩
分卷压缩
上图说明
1,google.part1.rar等,是rar分卷压缩后的结果
2,x00,x01等是利⽤split来分卷后的结果
3,ziptest.zip,ziptest.z01等是利⽤zip来分卷后的结果。
我始终相信tar 可以直接进⾏分卷的。
只不过我没有找到⽽已,下⾯是tar的参数,含有翻译
查看复制打印?
1. 主操作模式:
2.
3. -A, --catenate, --concatenate 追加 tar ⽂件⾄归档
4. -c, --create 创建⼀个新归档
5. -d, --diff, --compare 找出归档和⽂件系统的差异
6. --delete 从归档(⾮磁带!)中删除
7. -r, --append 追加⽂件⾄归档结尾
8. -t, --list 列出归档内容
9. --test-label 测试归档卷标并退出
10. -u, --update 仅追加⽐归档中副本更新的⽂件
11. -x, --extract, --get 从归档中解出⽂件
12.
13. 操作修饰符:
14. --check-device 当创建增量归档时检查设备号(默认)
15. -g, --listed-incremental=⽂件处理新式的 GNU 格式的增量备份
16. -G, --incremental 处理⽼式的 GNU 格式的增量备份
17. --ignore-failed-read当遇上不可读⽂件时不要以⾮零值退出
18. -n, --seek 归档可检索
19. --no-check-device 当创建增量归档时不要检查设备号
20. --occurrence[=NUMBER] 仅处理归档中每个⽂件的第 NUMBER个事件;仅当与以下⼦
命令 --delete,
21. --diff, --extract 或是 --list中的⼀个联合使⽤时,此选项才有效。
⽽且不管⽂件列表是以命
令⾏形式给出或是通过
22. -T 选项指定的;NUMBER 值默认为 1
23. --sparse-version=MAJOR[.MINOR]设置所⽤的离散格式版本(隐含--sparse)
24. -S, --sparse ⾼效处理离散⽂件
25.
26. 重写控制:
27.
28. -k, --keep-old-files 解压时不要替换存在的⽂件
29. --keep-newer-files不要替换⽐归档中副本更新的已存在的⽂件
30. --no-overwrite-dir 保留已存在⽬录的元数据
31. --overwrite 解压时重写存在的⽂件
32. --overwrite-dir解压时重写已存在⽬录的元数据(默认)
33. --recursive-unlink 解压⽬录之前先清除⽬录层次
34. --remove-files 在添加⽂件⾄归档后删除它们
35. -U, --unlink-first 在解压要重写的⽂件之前先删除它们
36. -W, --verify 在写⼊以后尝试校验归档
37.
38. 选择输出流:
39.
40. --ignore-command-error 忽略⼦进程的退出代码
41. --no-ignore-command-error将⼦进程的⾮零退出代码认为发⽣错误
42. -O, --to-stdout 解压⽂件⾄标准输出
43. --to-command=COMMAND将解压的⽂件通过管道传送⾄另⼀个程序
44. 操作⽂件属性:
45.
46. --atime-preserve[=METHOD]在输出的⽂件上保留访问时间,要么通过在读取(默认
47. METHOD=‘replace’)后还原时间,要不就不要在第⼀次(METHOD=‘system’)设置时间
48. --delay-directory-restore 直到解压结束才设置修改时间和所解⽬录的权限
49. --group=名称强制将 NAME作为所添加的⽂件的组所有者
50. --mode=CHANGES 强制将所添加的⽂件(符号)更改为权限CHANGES
51. --mtime=DATE-OR-FILE 从 DATE-OR-FILE 中为添加的⽂件设置mtime
52. -m, --touch 不要解压⽂件的修改时间
53. --no-delay-directory-restore取消 --delay-directory-restore 选项的效果
54. --no-same-owner 将⽂件解压为您所有
55. --no-same-permissions从归档中解压权限时使⽤⽤户的掩码位(默认为普通⽤户服务)
56. --numeric-owner 总是以数字代表⽤户/组的名称
57. --owner=名称强制将 NAME作为所添加的⽂件的所有者
58. -p, --preserve-permissions, --same-permissions解压⽂件权限信息(默认只为超级⽤户服
务)
59. --preserve 与 -p 和 -s ⼀样
60. --same-owner 尝试解压时保持所有者关系⼀致
61. -s, --preserve-order, --same-order为解压⾄匹配归档排序名称
62.
63. 设备选择和切换:
64.
65. -f, --file=ARCHIVE 使⽤归档⽂件或 ARCHIVE 设备
66. --force-local即使归档⽂件存在副本还是把它认为是本地归档
67. -F, --info-script=名称, --new-volume-script=名称在每卷磁带最后运⾏脚本(隐含 -M)
68. -L, --tape-length=NUMBER 写⼊ NUMBER × 1024 字节后更换磁带
69. -M, --multi-volume 创建/列出/解压多卷归档⽂件
70. --rmt-command=COMMAND 使⽤指定的 rmt COMMAND 代替 rmt
71. --rsh-command=COMMAND 使⽤远程 COMMAND 代替 rsh
72. --volno-file=⽂件使⽤/更新 FILE 中的卷数
73.
74. 设备分块:
75.
76. -b, --blocking-factor=BLOCKS 每个记录 BLOCKS x 512 字节
77. -B, --read-full-records 读取时重新分块(只对 4.2BSD 管道有效)
78. -i, --ignore-zeros 忽略归档中的零字节块(即⽂件结尾)
79. --record-size=NUMBER 每个记录的字节数 NUMBER,乘以 512
80.
81. 选择归档格式:
82.
83. -H, --format=FORMAT 创建指定格式的归档
84.
85. FORMAT 是以下格式中的⼀种:
86.
87. gnu GNU tar 1.13.x 格式
88. oldgnu GNU 格式 as per tar <= 1.12
89. pax POSIX 1003.1-2001 (pax) 格式
90. posix 等同于 pax
91. ustar POSIX 1003.1-1988 (ustar) 格式
92. v7 old V7 tar 格式
93.
94. --old-archive, --portability等同于 --format=v7
95. --pax-option=关键字[[:]=值][,关键字[[:]=值]]...控制 pax 关键字
96. --posix 等同于 --format=posix
97. -V, --label=TEXT 创建带有卷名 TEXT的归档;在列出/解压时,使⽤ TEXT作为卷
名的模式串
98.
99. 压缩选项:
100.
101. -a, --auto-compress 使⽤归档后缀来决定压缩程序
102. -I, --use-compress-program=PROG通过 PROG 过滤(必须是能接受 -d选项的程序) 103. -j, --bzip2 通过 bzip2 过滤归档
104. --lzma 通过 lzma 过滤归档
105. --no-auto-compress do not use archive suffix to determine thecompression program 106. -z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档
107. -Z, --compress, --uncompress 通过 compress 过滤归档
108.
109. -J, --xz filter the archive through xz
110. --lzop 通过 lzop 过滤归档
111.
112. 本地⽂件选择:
113.
114. --add-file=⽂件添加指定的 FILE ⾄归档(如果名字以 -开始会很有⽤的)
115. --backup[=CONTROL] 在删除前备份,选择 CONTROL 版本
116. -C, --directory=DIR 改变⾄⽬录 DIR
117. --exclude=PATTERN 排除以 PATTERN 指定的⽂件
118. --exclude-caches 除标识⽂件本⾝外,排除包含CACHEDIR.TAG 的⽬录中的内容119. --exclude-caches-all 排除包含 CACHEDIR.TAG 的⽬录
120. --exclude-caches-under 排除包含 CACHEDIR.TAG的⽬录中所有内容
121. --exclude-tag=⽂件除 FILE ⾃⾝外,排除包含 FILE的⽬录中的内容
122. --exclude-tag-all=⽂件排除包含 FILE 的⽬录
123. --exclude-tag-under=⽂件排除包含 FILE的⽬录中的所有内容
124. --exclude-vcs 排除版本控制系统⽬录
125. -h, --dereference跟踪符号链接;将它们所指向的⽂件归档并输出
126. --hard-dereference 跟踪硬链接;将它们所指向的⽂件归档并输出
127. -K, --starting-file=MEMBER-NAME从归档中的 MEMBER-NAME 成员处开始
128. --newer-mtime=DATE 当只有数据改变时⽐较数据和时间
129. --no-null 禁⽤上⼀次的效果 --null 选项
130. --no-recursion 避免⽬录中的⾃动降级
131. --no-unquote 不以 -T 读取的⽂件名作为引⽤结束
132. --null -T 读取以空终⽌的名字,-C 禁⽤
133. -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE只保存⽐ DATE-OR-FILE 更新的⽂件
134. --one-file-system 创建归档时保存在本地⽂件系统中
135. -P, --absolute-names 不要从⽂件名中清除引导符‘/’
136. --recursion ⽬录递归(默认)
137. --suffix=STRING 在删除前备份,除⾮被环境变量SIMPLE_BACKUP_SUFFIX覆盖,否则覆盖常⽤后缀(‘’)
138. -T, --files-from=⽂件从 FILE中获取⽂件名来解压或创建⽂件
139. --unquote 以 -T读取的⽂件名作为引⽤结束(默认)
140. -X, --exclude-from=⽂件排除 FILE 中列出的模式串
141.
142. ⽂件名变换:
143.
144. --strip-components=NUMBER 解压时从⽂件名中清除 NUMBER个引导部分
145. --transform=EXPRESSION, --xform=EXPRESSION使⽤ sed 代替 EXPRESSION 来进⾏⽂件名变换
146.
147. ⽂件名匹配选项(同时影响排除和包括模式串):
148.
149. --anchored 模式串匹配⽂件名头部
150. --ignore-case 忽略⼤⼩写
151. --no-anchored 模式串匹配任意‘/’后字符(默认对
152. exclusion 有效)
153. --no-ignore-case 匹配⼤⼩写(默认)
154. --no-wildcards 逐字匹配字符串
155. --no-wildcards-match-slash 通配符不匹配‘/’
156. --wildcards 使⽤通配符(默认对 exclusion )
157. --wildcards-match-slash通配符匹配‘/’(默认对排除操作有效)
158.
159. 提⽰性输出:
160.
161. --checkpoint[=NUMBER] 每隔 NUMBER个记录显⽰进度信息(默认为 10 个)
162. --checkpoint-action=ACTION 在每个检查点上执⾏ ACTION
163. --index-file=⽂件将详细输出发送⾄ FILE
164. -l, --check-links只要不是所有链接都被输出就打印信息
165. --no-quote-chars=STRING 禁⽤来⾃ STRING 的字符引⽤
166. --quote-chars=STRING 来⾃ STRING 的额外的引⽤字符
167. --quoting-style=STYLE 设置名称引⽤风格;有效的 STYLE值请参阅以下说明
168. -R, --block-number 每个信息都显⽰归档内的块数
169. --show-defaults 显⽰ tar 默认选项
170. --show-omitted-dir 列表或解压时,列出每个不匹配查找标准的⽬录
171. --show-transformed-names, --show-stored-names显⽰变换后的⽂件名或归档名
172. --totals[=SIGNAL] 处理归档后打印出总字节数;当此SIGNAL 被触发时带参数 -打印总字节数;允许的信号为:
173. SIGHUP,SIGQUIT,SIGINT,SIGUSR1 和
174. SIGUSR2;同时也接受不带 SIG
175. 前缀的信号名称
176. --utc 以 UTC 格式打印⽂件修改信息
177. -v, --verbose 详细地列出处理的⽂件
178. -w, --interactive, --confirmation每次操作都要求确认
179.
180. 兼容性选项:
181.
182. -o 创建归档时,相当于
183. --old-archive;展开归档时,相当于
184. --no-same-owner
185.
186. 其它选项:
187.
188. -?, --help 显⽰此帮助列表
189. --restrict 禁⽤某些潜在的有危险的选项
190. --usage 显⽰简短的⽤法说明
191. --version 打印程序版本
192.
193. 长选项和相应短选项具有相同的强制参数或可选参数。
194.
195. 除⾮以 --suffix 或 SIMPLE_BACKUP_SUFFIX
196. 设置备份后缀,否则备份后缀就是“~”。
197. 可以⽤ --backup 或 VERSION_CONTROL 设置版本控制,可能的值为:
198.
199. none, off 从不做备份
200. t, numbered 进⾏编号备份
201. nil, existing
202. 如果编号备份存在则进⾏编号备份,否则进⾏简单备份
203. never, simple 总是使⽤简单备份
-------
Linux中关于tar分卷压缩和合并的使⽤?
以每卷500M为例
tar分卷压缩:tar cvzpf - somedir | split -d -b 500m (-d不是split的选项,是shell的选项,表⽰将tar命令的输出作为split的输⼊)
tar多卷合并:cat x* > mytarfile.tar.gz
--------------------------
linux解压 tar命令
tar命令
tar [-cxtzjvfpPN] ⽂件与⽬录 ....
参数:
-c :建⽴⼀个压缩⽂件的参数指令(create 的意思);
-x :解开⼀个压缩⽂件的参数指令!
-t :查看 tarfile ⾥⾯的⽂件!
特别注意,在参数的下达中, c/x/t 仅能存在⼀个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要⽤ gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要⽤ bzip2 压缩?
-v :压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!
-f :使⽤档名,请留意,在 f 之后要⽴即接档名喔!不要再加参数!
例如使⽤『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使⽤原⽂件的原来属性(属性不会依据使⽤者⽽变)
-P :可以使⽤绝对路径来压缩!
-N :⽐后⾯接的⽇期(yyyy/mm/dd)还要新的才会被打包进新建的⽂件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
范例:
范例⼀:将整个 /etc ⽬录下的⽂件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的⽂件档名是⾃⼰取的,我们习惯上都⽤ .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执⾏的时候,会显⽰⼀个警告讯息:
# 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。
范例⼆:查阅上述 /tmp/etc.tar.gz ⽂件内有哪些⽂件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使⽤ gzip 压缩,所以要查阅该 tar file 内的⽂件时,
# 就得要加上 z 这个参数了!这很重要的!
范例三:将 /tmp/etc.tar.gz ⽂件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地⽅解开的!以这个范例来说,
# 我先将⼯作⽬录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
# 则解开的⽬录会在 /usr/local/src/etc 呢!另外,如果您进⼊ /usr/local/src/etc
# 则会发现,该⽬录下的⽂件属性与 /etc/ 可能会有所不同喔!
范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开⽽已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的⽂件名称,如果单只要⼀个⽂件,
# 就可以透过这个⽅式来下达!注意到! etc.tar.gz 内的根⽬录 / 是被拿掉了!
范例五:将 /etc/ 内的所有⽂件备份下来,并且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当您要保留原本⽂件的属性时!
范例六:在 /home 当中,⽐ 2005/06/01 新的⽂件才备份
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 范例⼋:将 /etc/ 打包后直接解开在 /tmp 底下,⽽不产⽣⽂件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有⽤途的!
# 要注意的地⽅在於输出档变成 - ⽽输⼊档也变成 - ,⼜有⼀个 | 存在~# 这分别代表 standard output, standard input 与管线命令啦!
# 这部分我们会在 Bash shell 时,再次提到这个指令跟⼤家再解释啰。