Linux
完全に初心者の質問ですが、自分では理解できません。http://www.feep.net/libtar/の libtar を使用しています
いくつかのファイルを zlib し、libtar で tar しました。
TAR *pTar;
snprintf(tar_name,sizeof(tar_name),"%s.tar",BACKUP_TASK.path_to_backup);
tar_open(&pTar, tar_name, NULL, O_WRONLY | O_CREAT, 0777, TAR_GNU);
tar_append_tree(pTar, BACKUP_TASK.path_to_backup, BACKUP_TASK.task_name);
//Append vm list to archive
tar_append_file(pTar, "task.xml", "backup.xml");
//Close it
tar_close(pTar);
次に、tar を検索し、いくつかのファイルを抽出する必要があります
TAR の実際の内容は次のとおりです。
#tar tf /home/backup/ftp_templates.tar
ftp_templates/
ftp_templates/d982d6cc-810a-7582-ddec-2c6b6a9d5530.xva.zlib
ftp_templates/51979771-7362-2061-9043-3606682fa0f3.xva.zlib
ftp_templates/f9e5a919-4aa9-a02d-b1ec-3667ecaa4a5b.xva.zlib
backup.xml
内部のファイルをリストしようとしています:
TAR *pTar;
char *tarFilename = "/home/backup/ftp_templates.tar";
tar_open(&pTar, tarFilename, NULL, O_RDONLY | TAR_NOOVERWRITE, 0777, TAR_GNU|TAR_VERBOSE);
while(th_read(pTar)==0)
{
puts(pTar->th_buf.name);
}
tar_close(pTar);
しかし、それは与えるだけです
ftp_templates/
ftp_templates/d982d6cc-810a-7582-ddec-2c6b6a9d5530.xva.zlib
また、ファイルを抽出しようとすると
tar_extract_file(pTar,"backup.xml");
サイズが0の空のファイルを作成します
すべてのファイルを抽出するとうまくいきます。単一のファイルを抽出する例が見つかりませんでした....
tar -xvf /home/backup/ftp_templates.tar backup.xml
これもうまくいったので、tar自体はOK..