import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class FileBackup {
private static final String SOURCE_DIR = "/path/to/source/directory"; // Replace with the source directory
private static final String BACKUP_DIR = "/path/to/backup/directory"; // Replace with the backup directory
public static void main(String[] args) {
// Ensure backup directory exists
File backupDir = new File(BACKUP_DIR);
if (!backupDir.exists()) {
backupDir.mkdirs();
}
backupFiles();
}
public static void backupFiles() {
File sourceDir = new File(SOURCE_DIR);
File[] files = sourceDir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) { // Only backup files
backupFile(file);
} else if (file.isDirectory()) { //Recursively backup directories
backupDirectory(file);
}
}
}
}
private static void backupFile(File file) {
try {
String fileName = file.getName();
String backupFileName = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME) + "_" + fileName;
File backupFile = new File(BACKUP_DIR, backupFileName);
// Copy the file
try (InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = new FileOutputStream(backupFile)) {
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
} catch (IOException e) {
System.err.println("Error backing up file " + fileName + ": " + e.getMessage());
}
} catch (Exception e) {
System.err.println("Error processing file " + file.getName() + ": " + e.getMessage());
}
}
private static void backupDirectory(File dir) {
try {
String dirName = dir.getName();
String backupDirName = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME) + "_" + dirName;
File backupDir = new File(BACKUP_DIR, backupDirName);
if (!backupDir.exists()) {
backupDir.mkdirs();
}
File[] files = dir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isFile()) {
File backupFile = new File(backupDir, file.getName());
try (InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = new FileOutputStream(backupFile)) {
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
} catch (IOException e) {
System.err.println("Error backing up file " + file.getName() + ": " + e.getMessage());
}
} else if (file.isDirectory()) {
backupDirectory(file); // Recursive call for subdirectories
}
}
}
} catch (Exception e) {
System.err.println("Error backing up directory " + dir.getName() + ": " + e.getMessage());
}
}
}
Add your comment