解決する上で助けてほしい問題が 2 つあります。指定された情報をキーファイルにキャプチャするプログラムがあります。私の場合、情報は、さまざまなディレクトリを特定の場所に X 日間バックアップするためのものです。
プログラムはソース ディレクトリを圧縮し、一時的なバックアップ場所にプッシュします。次に、先に進む前にファイルが存在するかどうかを確認します。
ここで、私の 2 つの問題が発生し始めます。
一時バックアップ ファイルがフォルダーにプッシュされ、一定期間、必要な量のフォルダーがループして作成されます。これは、デスクトップ上でのみうまく機能します。私の問題は、これらのファイルを好きな場所に配置できるようにしたいということです。これを行うと、エラーが発生し、「ディレクトリ 1 は既に存在します」と表示されて停止します。(これは期間の最初の日です)。
また、バックアップ ファイルの名前を、作成された現在の日付に変更したいと考えています。これを行うと、たとえば082313ではなく「Success242483413.tgz」という名前が表示されます。一時ディレクトリのファイルの名前を変更すると、動作しているように見えますが、問題はファイルが存在するかどうかを確認するチェックです。日付の読み方とエラー。
これが私のコードのスニペットです。 main() で、これら 2 つの問題が発生しています。よりよく理解するために実行を確認するのに役立つ場合は、すべてのコードを投稿できます。問題は太字の部分です。
編集:コードを太字にすることはできないので、その周りにコメントがある領域です。
ありがとうございます!
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;
}