मी आता माझ्या NixOS होम सर्व्हरचा बॅकअप बदलला आहे आणि साध्या दररोजच्या स्क्रिप्टऐवजी तो तासाभराच्या बॅकअपवर सेट केला आहे. माझ्या मित्राने व्यवस्थापित केलेल्या Mastodon इन्स्टन्सइतके हे मोहक नाही – तिथे दर २० मिनिटांनी एक ZFS स्नॅपशॉट घेतला जातो – पण मी या समाधानावरही आनंदी आहे. आणि मला हे मान्य करावे लागेल की मला NixOS अधिकाधिक आवडू लागले आहे. एआय (AI) शिवाय हे समजून घेणे खूप कठीण झाले असते, पण आता मी किमान तयार Nix फाइल्स वाचू शकतो. मी एकदा सर्व्हरला सामान्य लिनक्सवर बदलण्याचा विचार केला होता, पण जोपर्यंत हे इतके चांगले काम करत आहे...

  1. /etc/nixos: संपूर्ण NixOS कॉन्फिगरेशन (सर्व .nix फाइल्स).

  2. /opt/minecraft: माइनक्राफ्ट (Minecraft) सर्व्हरचे सर्व जग (worlds) आणि डेटा.

  3. /opt/satisfactory: सॅटिसफॅक्टरी (Satisfactory) सर्व्हरचे गेम सेव्ह आणि कॉन्फिगरेशन.

  4. /opt/Blog: ब्लॉगचा सोर्स कोड आणि मजकूर.

  5. /opt/ui: Mastodon-UI फाइल्स.

  6. /opt/audiobookshelf: ऑडिओबुक्स आणि संबंधित डेटाबेस.

हे सर्व RClone द्वारे माउंट केलेल्या S3 स्टोरेजवर साठवले जाते.

NixOS कॉन्फिगरेशन


{ config, pkgs, ... }:

{
  # BorgBackup कॉन्फिगरेशन
  services.borgbackup.jobs.hourly = {
    # S3-माउंटमधील रिपॉझिटरीचा पाथ
    repo = "/opt/S3/Backup/NixOSHomeServer_Borg";

    # पासवर्डची आवश्यकता नाही
    encryption.mode = "none";

    # अधिक जागा वाचवण्यासाठी कॉम्प्रेशन
    compression = "auto,zstd";

    # बॅकअप घ्यायचे पाथ
    paths = [
      "/etc/nixos"
      "/opt/minecraft"
      "/opt/satisfactory"
      "/opt/Blog"
      "/opt/ui"
      "/opt/audiobookshelf"
    ];

    # तासाभराची अंमलबजावणी
    startAt = "hourly";

    # रिपॉझिटरी नसल्यास ती आपोआप इनिशियलाइज करा
    doInit = true;

    # धारणा नियम (Pruning)
    prune.keep = {
      within = "1d"; # गेल्या २४ तासांतील सर्व स्नॅपशॉट्स
      daily = 7;
      weekly = 4;
      monthly = 12;
    };
  };

  # बोर्ग (Borg) सुरू होण्यापूर्वी S3-माउंट तयार असल्याची खात्री करा
  systemd.services.borgbackup-job-hourly = {
    requires = [ "rclone-s3-mount.service" ];
    after = [ "rclone-s3-mount.service" ];
  };
}