我很好奇,做了一些阅读,但仍然有问题。
CPIO 与 TAR 有何不同?我在另一个问题中被告知 tar 用于将许多文件合并到 1 个存档中,然后通常是 gzip'd 或 bzip'd。
我还被告知 TAR 无法从 STDOUT 压缩。我想归档/压缩 ZFS 快照以进行备份。我想知道是否可以将 CPIO 与 bzip2 结合使用以获得这种效果。
还是我有完全错误的想法?这不是CPIO的目的吗?
这是我在阅读了有关备份 ZFS 快照的 Oracle 文档后想到的那种命令。
# Backup snapshot to cpio and bzip2 archive
zfs send media/mypictures@20070607 | cpio -o | bzip2 -9c > ~/backups/20070607.bz2
# Restore snapshot from cpio and bzip2 archive
zfs recieve media/mypictures@20070607 | cpio -i | bunzip2 -c ~/backups/20070607.bz2
Run Code Online (Sandbox Code Playgroud) 我收到了一个 Unix 软件发行版,它是一个压缩的 cpio 文件。提取文件的最佳命令是什么?
编辑:我想多member01
和member02
和目录blah/
tarball_1.tar.gz
包含test/
20 个文件的目录。我只想提取成员test/member01
和test/member02
目录,blah/
并使用 ssh/scp 将它们复制到另一个“remote_host”。
这可以作为单线完成吗?我考虑过使用tar
, pax
, 或cpio
但我想我对这些实用程序还不是很熟练。
在 GNU/Linux 中是否有任何好的工具可以复制文件,例如cp
,但也可以显示进度和限制速度(并且不会中断更改限制),例如pv
?
原型:
find source_directory | cpio -H newc -o | pv -s `du -bs source_directory/ | awk '{print $1}'` | (cd /destination/directory && cpio -di)
Run Code Online (Sandbox Code Playgroud)
另外rsync -aP source_directory /destionation/directory/
,但这会单独显示进度条,并且在启动后无法更改速率。
或者我应该为 pv/cpio 编写一个包装器?完毕。
% find a/ | cpio -o | gzip -c > alpha.gz
% find b/ | cpio -o | gzip -c > bravo.gz
% cat alpha.gz beta.gz > charlie.gz
% gunzip charlie.gz
Run Code Online (Sandbox Code Playgroud)
现在我得到文件 charlie,它应该是一个串联的 cpio 档案。但cpio -id < charlie
只提取a/的内容。我怎么能得到b/?
补充:charlie 的大小等于 alpha 加上 bravo。egrep 一些关键词表明charlie 肯定包含bravo 的数据。