[c++] 파일 및 디렉토리 동기화하기
1. 파일 동기화
파일을 동기화하기 위해서는 파일 시스템에서 파일의 변경 사항을 감지하고 해당 변경 사항을 다른 위치에 복사하거나 업데이트해야 합니다. 이를 위해 파일 모니터링 및 동기화 알고리즘을 구현할 수 있습니다.
예를 들어, C++에서 파일 동기화를 위한 간단한 코드는 다음과 같습니다.
#include <fstream>
#include <iostream>
void syncFiles(const std::string& sourceFilePath, const std::string& targetFilePath) {
std::ifstream sourceFile(sourceFilePath, std::ios::binary);
std::ofstream targetFile(targetFilePath, std::ios::binary);
targetFile << sourceFile.rdbuf(); // 파일 내용 복사
}
int main() {
std::string sourceFilePath = "source_file.txt";
std::string targetFilePath = "target_file.txt";
syncFiles(sourceFilePath, targetFilePath);
return 0;
}
2. 디렉토리 동기화
디렉토리를 동기화하기 위해서는 해당 디렉토리 내의 파일 및 하위 디렉토리를 재귀적으로 탐색하고, 각 파일에 대해 파일 동기화 알고리즘을 적용해야 합니다.
이를 위해 C++에서 디렉토리를 동기화하는 예제 코드는 다음과 같습니다.
#include <filesystem>
#include <iostream>
void syncDirectory(const std::filesystem::path& sourceDir, const std::filesystem::path& targetDir) {
for (const auto& entry : std::filesystem::directory_iterator(sourceDir)) {
if (std::filesystem::is_directory(entry.path())) {
// 하위 디렉토리 동기화
syncDirectory(entry.path(), targetDir / entry.path().filename());
} else {
// 파일 동기화
syncFiles(entry.path(), targetDir / entry.path().filename());
}
}
}
int main() {
std::filesystem::path sourceDir = "source_directory";
std::filesystem::path targetDir = "target_directory";
syncDirectory(sourceDir, targetDir);
return 0;
}
이러한 방식으로 파일 및 디렉토리를 동기화할 수 있습니다.
참고 자료
- C++ 파일 시스템 라이브러리 (cppreference.com)
- (cppreference.com)
- Microsoft Docs: File Management Functions (C++)