我有两个问题需要帮助解决。我有一个程序可以捕获密钥文件中的给定信息。就我而言,这些信息用于将不同的目录备份到给定位置 X 天。
该程序将压缩源目录,然后将它们推送到临时备份位置。然后它将在继续之前检查文件是否存在。
这是我的两个问题开始发挥作用的地方。
临时备份文件现在将被推送到一个文件夹,该文件夹在一段时间内循环并创建所需数量的文件夹。如果仅在桌面上,这效果很好。我的问题是我希望能够将这些文件放在我喜欢的任何地方。当我这样做时,它会出错并说“目录 1 已经存在”并停止。(这是持续时间的第一天)。
我还想将备份文件重命名为它们创建的当前日期。当我这样做时,它会将名称显示为“Success242483413.tgz”,而不是例如 082313。当我重命名临时目录中的文件时,它似乎可以工作,但问题是检查文件是否存在不知道如何读取日期和错误。
这是我的代码中的一个片段,我遇到这两个问题的 main() 。如果它有助于更好地理解它的运行,我可以发布所有代码。问题是粗体区域。
编辑:我不能加粗代码,所以它周围有注释的区域。
谢谢你,很抱歉这么长的帖子!
int main()
{
//The key file, editable to your requirements.
parseCodeFile cfg("key.cfg");
std::string source = cfg.getValueOfKey<std::string>("source");
std::string tempDestination = cfg.getValueOfKey<std::string>("tempDestination");
std::string destination = cfg.getValueOfKey<std::string>("destination");
int duration = cfg.getValueOfKey<int>("duration");
int count, placeHolder, placeHolderAdvanced;
count = 1;
char command[256];
snprintf(command, 256, "mkdir %s", tempDestination.c_str());
system(command);
// START RELEVANT
snprintf(command, 256, "tar -cvzf %s/backup.tgz %s", tempDestination.c_str(), source.c_str());
system(command);
// END RELEVANT
//Determines if the backup file exists. If not, closes the program.
ifstream backupExists(tempDestination.c_str());
if(backupExists.good())
{
std::cout << "\nCurrent backup.tgz file exists!\n\n";
}
else
{
std::cout << "\nFUUUUU NO FILE!\n";
return 0;
}
//Removes the last folder in the group.
snprintf(command, 256, "rm -rf %i", duration);
system(command);
while(count<duration)
{
//Holds the value that descends.
placeHolder = duration - count;
//Holds the value that ascends.
placeHolderAdvanced = placeHolder + 1;
snprintf(command, 256, "mv %i %i", placeHolder, placeHolderAdvanced);
system(command);
count++;
}
// START RELEVANT
snprintf(command, 256, "mkdir %i", 1);
system(command);
snprintf(command, 256, "mv %s/backup.tgz %s/1", tempDestination.c_str(), destination.c_str());
system(command);
snprintf(command, 256, "mv %s/1/backup.tgz %s/1/`date +%m%d%y`.tgz", destination.c_str(), destination.c_str());
system(command);
// END RELEVANT
return 0;
}