无法从特定文件夹创建 tar 个文件。提取后路径错误

Unable to create tar file of files from specific folder . Getting wrong path after extraction

这里我只想创建 tar 文件 bin 文件夹 。我的 main.c 代码有位置,即 /home/amit/practice/datafill/main.c。 datafill 目录包含 bin、conf、config、data、lib 等文件夹。

有一个 link system("cd <path>") in a C program 但是它没有解决我的问题。通过将 2 个命令与 && 运算符结合使用,它仅从 bin 文件夹创建 bin.tar,但是当它被提取时,它包含完整路径 link /home/amit/practice/datafill/bin/ 是错误的。假设bin 文件夹中有一个文件abc.txt。所以在提取后,abc.txt 应该只有 bin/abc.txt 的路径,而不是 /home/amit/practice/datafill/bin/abc.txt

#include<stdio.h>
#include<unistd.h>
int main(void)
{
char Cmd[256];
/*Go to specific directory && create tar file*/
sprintf(Cmd,"cd /home/amit/practice/datafill/bin/ && sudo tar -cvf bin.tar *");
system(Cmd);
return 0;
}

您的代码在 bin 目录中创建了 tar 文件,但您似乎检查了当前目录中的旧尝试。

这段代码很奇怪,不自然。我通常会这样做:

 `cd /home/amit/practice/datafill/bin/ && sudo tar -cvf - *`

这导致 tar球被写入程序的标准输出。如果要生成到特定路径,这样更合理

 `sudo sh -c '(cd /home/amit/practice/datafill/bin/ && tar -cvf - *) > bin.tar'`