Мне нужно заархивировать файлы *.cpp в определенный каталог внутри tar-архива, сжатого с помощью gzip. Мне нужно, чтобы это происходило во время выполнения, чтобы точно документировать, какой код (например, какие версии каких файлов исходного кода) произвел определенный набор результатов программы.
Итак, я написал следующую функцию. Обычно это работает нормально, но в прошлом было один или два сбоя. Я не могу точно вспомнить, что произошло, но я помню, что думал, что это произошло из-за использования system()
вместо фактического удаления и архивирования файла в программе на С++.
void saveSourceCode_TarGZ(string destinationFile) {
system( ("rm -f " + destinationFile).c_str() );
system( ("rm -f " + destinationFile + ".gz").c_str() );
system( ("tar -cvf " + destinationFile + " ./*.cpp").c_str() );
system( ("gzip " + destinationFile).c_str() );
}
Первые две строки в приведенной выше функции просто удаляют уже существующий файл с тем же именем, что и архив, который я пытаюсь создать (destinationFile
), если он существует. Последние две строки, соответственно, создают tarball из всех файлов .cpp в текущем рабочем каталоге и сжимают этот tarball.
Как мне переписать эту функцию, используя библиотеки STL или Boost?
Я очень неопытен в использовании библиотек Boost, и я полный профан, когда дело доходит до управления файловой системой в С++.