tar创建一个空文件夹,我该如何摆脱它?

时间:2014-06-04 04:40:33

标签: linux bash shell tar

我有以下一行

tar -c -v -z -f  "$ARCHIVE_PATH/$3_$fileYear$fileMonth.tar.gz" -C "$ARCHIVE_PATH/tmp" .

其中

  • $ ARCHIVE_PATH = / opt / colorado / archive /
  • $ 3 = IMPORT
  • $ fileYear = 2014
  • $ fileMonth = 06

因此,该行会在.tar.gz / IMPORT_201406.tar.gz

中的文件中创建名为/opt/colorado/archive的{​​{1}}文件

但是当我使用/opt/colorado/archive/tmp/时,我会看到这个

tar -ztvf  "opt/colorado/archive/IMPORT_201406.tar.gz"

根据我的理解,如果我没有-rwxr-xr-x root/root 27 2014-06-04 14:20 ./afile.txt drwxr-xr-x root/root 0 2014-06-04 14:08 ./opt/ drwxr-xr-x root/root 0 2014-06-04 14:08 ./opt/colorado/ drwxr-xr-x root/root 0 2014-06-04 14:08 ./opt/colorado/archive/ drwxrwxr-x [USER]/[USER] 0 2014-06-04 14:09 ./opt/colorado/archive/tmp/ -rwxr-xr-x root/root 712 2014-06-04 14:20 ./twofile.txt -rwxr-xr-x root/root 383 2014-06-04 14:20 ./random.cvs -rwxr-xr-x root/root 27 2014-06-04 14:20 ./helloworld.sh -rwxr-xr-x root/root 7938 2014-06-04 14:20 ./helloworld.py -C会被添加到每个文件中,所以添加/opt/colorado/archive/tmp/告诉tar首先移动到该目录,我可以看到在文件列表中为什么添加了-C文件夹,有没有办法将其删除?

2 个答案:

答案 0 :(得分:1)

它正在将目录添加到存档中,因为您要求它。具体来说,您告诉tar归档目录.,这就是它的作用。计算机往往是字面的。

如果您不希望归档目录,则必须将目录中的文件名传递给tar。这是一种方法:

(cd "$ARCHIVE_PATH/tmp"; ls) |
tar -cvzf  "$ARCHIVE_PATH/$3_$fileYear$fileMonth.tar.gz" -C "$ARCHIVE_PATH/tmp" -T-

或者,您可以使用以下文件从目录执行tar:

cd "$ARCHIVE_PATH/tmp"; tar -cvzf  "$ARCHIVE_PATH/$3_$fileYear$fileMonth.tar.gz" *

我不知道为什么你的目录包含其完整路径,而不仅仅是.,以及为什么它还包含归档中的父目录。我的系统tar上的tar (GNU tar) 1.26版本似乎没有这样做。

答案 1 :(得分:-1)

此命令将生成tar文件:

tar -cvf new.tar.gz my_dir_to_tar /

其中new.tar.gz = tar文件名 和my_dir_to_tar / =制作tar的目录