【问题标题】:create tar file from stdin从标准输入创建 tar 文件
【发布时间】:2023-04-01 19:15:02
【问题描述】:

我想将 mysql 即时备份到磁带上。有些人喜欢

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

我希望磁带有一个 tar 文件的内容,并且这个文件有内容“mysqldump.sql”

所以应该输出一个命令“tar -t

mysqldump.sql

我一开始不想将mysqldump保存到文件,因为我没有空间和IO资源。我想即时进行。

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

【问题讨论】:

  • 如果 /dev/tape 一个包含 sqldump 的 tar 文件,你怎么知道它有任何内容(因为你不能知道它是否只有 sqldump)?
  • /dev/tape 不是 tar 文件。它是磁带(磁膜)硬件设备
  • 当然,但如果您希望tar -t < /dev/tape 工作,它的内容必须 tar 文件的内容。
  • 是的。对于一堆文件很容易完成: tar -c /home > /dev/tape 现在tape 包含了tar 文件,它可以通过tar -t 列出。我的问题是如何使用标准输入
  • 您无法从标准输入创建 tar 文件。 tar 中的每个文件都有一个包含文件长度的 header,因此 tar 在写入 header 之前必须知道有多少数据。

标签: pipe tar


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    为了未来的访问者:mysqldump 生成单个文件,这就是为什么将其存储在磁带上的最合适方式可能是:

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

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 2017-03-04
      • 2012-11-05
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      相关资源
      最近更新 更多