我有以下一行
tar -c -v -z -f "$ARCHIVE_PATH/$3_$fileYear$fileMonth.tar.gz" -C "$ARCHIVE_PATH/tmp" .
其中
因此,该行会在.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
文件夹,有没有办法将其删除?
答案 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的目录