ian*_*215 12 linux compression filesystems zfs
我正在尝试了解如何从命令通过管道传输到 gzip、cpio 或 tar 之类的东西。
有问题的命令属于 ZFS 系统。我在 Ubuntu Linux 10.04.3 上运行 ZFS。
我使用的命令是;
To create a snapshot;
zfs snapshot media/mypictures@20070607
To copy the snapshot to a directory;
zfs send media/mypictures@20070607 > ~/backups/20070607
Then I can also pipe into gzip
zfs send media/mypictures@20070607 | gzip > ~/backups/20070607.gz
Run Code Online (Sandbox Code Playgroud)
这些部分我理解。
但我的第一个问题是,我将如何通过管道输入 tar + gzip?
这个?
zfs send media/mypictures@20070607 | tar czvf > ~/backups/20070607.tar.gz
Run Code Online (Sandbox Code Playgroud)
我的另一个问题是如何从 tarball 或 gzip 中获取数据?
我必须使用 zfs recieve media/mypictures@20070607 < ~/backups/20070607
那么如果我使用 tar 会不会是这样?
zfs recieve media/mypictures@20070607 | tar xzvf < ~/backups/20070607.tar.gz
Run Code Online (Sandbox Code Playgroud)
任何的想法?
Red*_*ick 11
tar期望得到一个文件名列表作为命令行参数。据我所知,它不能用于读取匿名管道(它将作为文件名和文件元数据存储什么?)
$ echo aaa | tar cv > f.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.
Run Code Online (Sandbox Code Playgroud)
如果您的数据是单个逻辑项或流,则无需使用 tar 之类的东西,它用于将一组单独的文件组合在一起。
否则,您必须先将数据写入文件,对文件进行 tar,然后再删除文件。
Pis*_*ing 10
该-f选项指定一个文件,否则输出到标准输出。因此,要么删除重定向:
zfs send media/mypictures@20070607 | tar czvf ~/backups/20070607.tar.gz
Run Code Online (Sandbox Code Playgroud)
或删除f选项:
zfs send media/mypictures@20070607 | tar czv > ~/backups/20070607.tar.gz
Run Code Online (Sandbox Code Playgroud)
与解焦类似。