1. import java.io.*;
  2. import java.time.LocalDateTime;
  3. import java.time.format.DateTimeFormatter;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. public class FileBackup {
  7. private static final String SOURCE_DIR = "/path/to/source/directory"; // Replace with the source directory
  8. private static final String BACKUP_DIR = "/path/to/backup/directory"; // Replace with the backup directory
  9. public static void main(String[] args) {
  10. // Ensure backup directory exists
  11. File backupDir = new File(BACKUP_DIR);
  12. if (!backupDir.exists()) {
  13. backupDir.mkdirs();
  14. }
  15. backupFiles();
  16. }
  17. public static void backupFiles() {
  18. File sourceDir = new File(SOURCE_DIR);
  19. File[] files = sourceDir.listFiles();
  20. if (files != null) {
  21. for (File file : files) {
  22. if (file.isFile()) { // Only backup files
  23. backupFile(file);
  24. } else if (file.isDirectory()) { //Recursively backup directories
  25. backupDirectory(file);
  26. }
  27. }
  28. }
  29. }
  30. private static void backupFile(File file) {
  31. try {
  32. String fileName = file.getName();
  33. String backupFileName = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME) + "_" + fileName;
  34. File backupFile = new File(BACKUP_DIR, backupFileName);
  35. // Copy the file
  36. try (InputStream inputStream = new FileInputStream(file);
  37. OutputStream outputStream = new FileOutputStream(backupFile)) {
  38. byte[] buffer = new byte[1024];
  39. int len;
  40. while ((len = inputStream.read(buffer)) > 0) {
  41. outputStream.write(buffer, 0, len);
  42. }
  43. } catch (IOException e) {
  44. System.err.println("Error backing up file " + fileName + ": " + e.getMessage());
  45. }
  46. } catch (Exception e) {
  47. System.err.println("Error processing file " + file.getName() + ": " + e.getMessage());
  48. }
  49. }
  50. private static void backupDirectory(File dir) {
  51. try {
  52. String dirName = dir.getName();
  53. String backupDirName = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME) + "_" + dirName;
  54. File backupDir = new File(BACKUP_DIR, backupDirName);
  55. if (!backupDir.exists()) {
  56. backupDir.mkdirs();
  57. }
  58. File[] files = dir.listFiles();
  59. if (files != null) {
  60. for (File file : files) {
  61. if (file.isFile()) {
  62. File backupFile = new File(backupDir, file.getName());
  63. try (InputStream inputStream = new FileInputStream(file);
  64. OutputStream outputStream = new FileOutputStream(backupFile)) {
  65. byte[] buffer = new byte[1024];
  66. int len;
  67. while ((len = inputStream.read(buffer)) > 0) {
  68. outputStream.write(buffer, 0, len);
  69. }
  70. } catch (IOException e) {
  71. System.err.println("Error backing up file " + file.getName() + ": " + e.getMessage());
  72. }
  73. } else if (file.isDirectory()) {
  74. backupDirectory(file); // Recursive call for subdirectories
  75. }
  76. }
  77. }
  78. } catch (Exception e) {
  79. System.err.println("Error backing up directory " + dir.getName() + ": " + e.getMessage());
  80. }
  81. }
  82. }

Add your comment