当脚本中的命令也需要引用时,如何在bash scrips中使用引号?

时间:2017-03-30 02:16:55

标签: linux bash shell backup tar

我正在尝试创建一个脚本,该脚本将使用tar文件末尾的时间戳在同一目录中创建视频文件的备份文件。该脚本仅用于演示目的,这就是我不打算将文件发送到其他目录的原因。以下是我走了多远。

#!/bin/bash
cd Compression_Play/
echo Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz
tar -I "pixz -9t" -cvf Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz 2017-03-23_01-13-02.avi

我的问题是每当我尝试执行脚本时它都会给我这个:

Me.29_Mar_2017-22:03:49.tar.xz
tar: -9: (PROGRAM ERROR) Option should have been recognized!?
Try 'tar --help' or 'tar --usage' for more information.

尽我所知,问题在于我的tar命令中的引号。有没有办法制作脚本,以便我可以保留引号或替换它们?

2 个答案:

答案 0 :(得分:0)

鉴于您的目标是进行存档,可能保留所有者,文件模式,文件标志和ACL(如果可用),那么这应该可以满足您的需求:

#!/bin/bash
archive_name="Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz"
$(cd Compression_Play/
  tar -cvp 2017-03-23_01-13-02.avi |
  pixz -9t > $archive_name
)

根据pixzpixz -x9T < $archive_name | tar xvpf - 进行tarball压缩/解压缩,您需要撤消管道以获取数据:

bundle.js

答案 1 :(得分:0)

格雷格给出了一个很好的答案,而且效果很好。在我把头撞了几个小时之后,我也想出了另一种方法,并从我得到的帮助中拿走了这些东西。

#!/bin/bash cd /home/apowell/Compression_Play/Test_Backup tar -I 'pixz -9t' -cvf Me.$(date +%d_%b_%Y-%H_%M_%S).tar.xz /home/apowell/Compression_Play/Linux_Programs

这个通过用简单的xz替换pixz来压缩一点。

#!/bin/bash cd /home/apowell/Compression_Play/Test_Backup tar -I 'xz -9ve -T8 -k' -cvf Me.$(date +%d_%b_%Y-%H_%M_%S).tar.xz /home/apowell/Compression_Play/Linux_Programs