从标准输入创建tar文件

3

我想实时将MySQL备份到磁带上。类似于:

mysqldump|tar --filename=mysqlbackup.sql > /dev/tape

我希望这盘磁带里面包含一个tar文件,而且这个文件的内容是“mysqldump.sql”。因此,执行命令“tar -t < /dev/tape”应该能够输出相关内容。
mysqldump.sql

我不想先将mysqldump保存到文件,因为我没有足够的空间和IO资源。我希望能够实时执行。

我不想使用“mysqldump > /dev/tape”,因为它没有元信息,也无法知道磁带是否有任何内容。


如果你想要的是,/dev/tape 一个包含sqldump的tar文件,那么你怎么知道它是否有任何内容(因为你不知道它是否只有sqldump)? - Scott Hunter
/dev/tape 不是 tar 文件。它是磁带(磁性薄膜)硬件设备。 - xoid
你还没有回答我的原始问题。 - Scott Hunter
5
无法从标准输入创建tar文件。tar文件中的每个文件都有一个包含文件长度的头部,因此在编写头部之前,tar必须知道有多少数据。 - parkydr
显示剩余3条评论
2个回答

8

用户parkydr给出了更好的答案:

你不能从标准输入创建tar文件。tar中每个文件都有一个包含文件长度的头,因此在写入头之前,tar必须知道有多少数据。 - parkydr


2

为了方便未来的访问者,需要说明一下:mysqldump生成的是单个文件,因此在磁带上存储它的最合适方法可能是:

mysqldump| bzip2 - > mysqldump-`date +"%y-%b-%d"`.bz2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接