[java] 자바에서 파일 시스템과 데이터베이스를 이용한 백업 및 복원 방법

데이터의 안전한 보관은 매우 중요합니다. 자바 애플리케이션에서 파일 시스템과 데이터베이스를 이용하여 데이터를 백업하고 복원하는 방법에 대해 알아보겠습니다.

파일 시스템 백업 및 복원

파일 복사를 통한 백업

가장 간단한 방법은 자바의 파일 복사 기능을 이용하여 데이터를 백업하는 것입니다. 다음은 Files 클래스를 사용하여 파일을 복사하는 예제입니다.

import java.io.*;
import java.nio.file.*;

public class FileBackup {
    public static void main(String[] args) {
        Path sourceFile = Paths.get("source.txt");
        Path backupFile = Paths.get("backup.txt");

        try {
            Files.copy(sourceFile, backupFile, StandardCopyOption.REPLACE_EXISTING);
            System.out.println("Backup successful!");
        } catch (IOException e) {
            System.out.println("Backup failed: " + e.getMessage());
        }
    }
}

파일 복사를 통한 복원

동일한 방법으로 백업된 파일을 원래의 위치로 복원할 수 있습니다.

import java.io.*;
import java.nio.file.*;

public class FileRestore {
    public static void main(String[] args) {
        Path backupFile = Paths.get("backup.txt");
        Path restoredFile = Paths.get("restored.txt");

        try {
            Files.copy(backupFile, restoredFile, StandardCopyOption.REPLACE_EXISTING);
            System.out.println("Restore successful!");
        } catch (IOException e) {
            System.out.println("Restore failed: " + e.getMessage());
        }
    }
}

데이터베이스 백업 및 복원

데이터베이스 백업

대표적인 데이터베이스 시스템인 MySQL을 사용한 데이터베이스 백업 예제입니다.

import java.io.*;
import java.text.*;
import java.util.*;

public class DatabaseBackup {
    public static void main(String[] args) {
        try {
            String dbName = "mydatabase";
            String dbUser = "username";
            String dbPass = "password";

            String backupPath = "backup.sql";
            String executeCmd = "mysqldump -u " + dbUser + " -p" + dbPass + " " + dbName + " -r " + backupPath;

            Process runtimeProcess = Runtime.getRuntime().exec(executeCmd);
            int processComplete = runtimeProcess.waitFor();

            if (processComplete == 0) {
                System.out.println("Backup successful!");
            } else {
                System.out.println("Backup failed!");
            }
        } catch (IOException | InterruptedException ex) {
            System.out.println("Backup failed: " + ex.getMessage());
        }
    }
}

데이터베이스 복원

동일한 데이터베이스 시스템을 사용하여 백업 파일을 이용한 데이터베이스 복원은 다음과 같이 수행할 수 있습니다.

public class DatabaseRestore {
    public static void main(String[] args) {
        try {
            String dbName = "mydatabase";
            String dbUser = "username";
            String dbPass = "password";

            String restorePath = "backup.sql";
            String executeCmd = "mysql -u " + dbUser + " -p" + dbPass + " " + dbName + " < " + restorePath;

            Process runtimeProcess = Runtime.getRuntime().exec(new String[]{"bash", "-c", executeCmd});
            int processComplete = runtimeProcess.waitFor();

            if (processComplete == 0) {
                System.out.println("Restore successful!");
            } else {
                System.out.println("Restore failed!");
            }
        } catch (IOException | InterruptedException ex) {
            System.out.println("Restore failed: " + ex.getMessage());
        }
    }
}

위 코드들은 MySQL 데이터베이스를 대상으로 한 예제이며, 다른 데이터베이스 시스템을 사용할 때는 해당 데이터베이스 시스템의 백업 및 복원 방법을 참고하세요.

데이터의 백업 및 복원은 신중한 절차가 필요하며, 실제 운영환경에서는 보안 및 안정성을 고려하여 추가적인 설정이 필요할 수 있습니다.