从控制台归档的 TARBall 中提取文件
Extract file from TARBall archived from console
我遇到下一个问题:
有 TAR 存档我必须使用 file-roller
编译一段时间作为脚本例程使用 file-roller
命令。
现在我不得不将我的脚本更改为更多 "technical" 和跨平台直接引用 TAR 命令:
为此,我只是 cd
到特定目录并使用此命令:
tar -cvzf "path/to/archive.tar.gz" "." > /dev/null 2>&1
“.”的问题目录转换为存档内的路径,文件存储在子目录“.”下。接下来的方式:
archive.tar.gz
-> ./
-> file1.ext
-> file2.ext
我已经设法使用 --transform
选项以这种方式将文件放回存档的根文件夹中:
tar -cvzf "path/to/archive.tar.gz" --transform "s,.,," "." > /dev/null 2>&1
结果是正确组织的存档,文件移动到存档根文件夹:
archive.tar.gz
-> file1.ext
-> file2.ext
file-roller
可读的输出存档,tar
的文件提取功能已损坏:
tar -x -f "path/to/archive.tar" -C "$TEMP_DIR/" file1.ext
TAR 必须立即报告:存档或类似文件中没有此类文件或目录。
tar -x -f "path/to/archive.tar" -C "$TEMP_DIR/"
仍然正常工作,并将存档中的所有文件提取到“$TEMP_DIR/”。
您需要去掉第一个点和斜杠:
tar -cvzf "path/to/archive.tar.gz" --transform "s,./,," "." > /dev/null 2>&1
或者你可以简单地做(如果你没有隐藏文件)
tar -cvzf "path/to/archive.tar.gz" * > /dev/null 2>&1
提取可以直接在tar.gz上运行:
tar zxf "path/to/archive.tar.gz" -C "$TEMP_DIR/" tarred-file.ext
我遇到下一个问题:
有 TAR 存档我必须使用 file-roller
编译一段时间作为脚本例程使用 file-roller
命令。
现在我不得不将我的脚本更改为更多 "technical" 和跨平台直接引用 TAR 命令:
为此,我只是 cd
到特定目录并使用此命令:
tar -cvzf "path/to/archive.tar.gz" "." > /dev/null 2>&1
“.”的问题目录转换为存档内的路径,文件存储在子目录“.”下。接下来的方式:
archive.tar.gz
-> ./
-> file1.ext
-> file2.ext
我已经设法使用 --transform
选项以这种方式将文件放回存档的根文件夹中:
tar -cvzf "path/to/archive.tar.gz" --transform "s,.,," "." > /dev/null 2>&1
结果是正确组织的存档,文件移动到存档根文件夹:
archive.tar.gz
-> file1.ext
-> file2.ext
file-roller
可读的输出存档,tar
的文件提取功能已损坏:
tar -x -f "path/to/archive.tar" -C "$TEMP_DIR/" file1.ext
TAR 必须立即报告:存档或类似文件中没有此类文件或目录。
tar -x -f "path/to/archive.tar" -C "$TEMP_DIR/"
仍然正常工作,并将存档中的所有文件提取到“$TEMP_DIR/”。
您需要去掉第一个点和斜杠:
tar -cvzf "path/to/archive.tar.gz" --transform "s,./,," "." > /dev/null 2>&1
或者你可以简单地做(如果你没有隐藏文件)
tar -cvzf "path/to/archive.tar.gz" * > /dev/null 2>&1
提取可以直接在tar.gz上运行:
tar zxf "path/to/archive.tar.gz" -C "$TEMP_DIR/" tarred-file.ext