ሁሉም ሰው backup አለው፣ አንዱን ለመመለስ እስኪሞክር ድረስ። ማውጫው ባዶ ሆኖ ይገኛል፣ የcron ስራው በመጋቢት ሞቷል፣ ወይም archiveኡ አሁን በተበላሸው ዲስክ ላይ ነው። restic አብዛኛውን ይፈታል፦ በእርስዎ በኩል ያመሰጥራል፣ እያንዳንዱን የዳታ ቁራጭ አንድ ጊዜ ያከማቻል፣ አንድን ፋይል መመለስንም ሙሉውን ሰርቨር backup እንደማድረግ ቀላል ያደርገዋል።
በUbuntu ወይም Debian ላይ በእርግጥ የምናምነው ቅንብር ይኸውና።
1. resticን ይጫኑ
apt update && apt install -y restic
restic self-update
የdistribution packages ወደ ኋላ ይቀራሉ፤ self-update የአሁኑን ስሪት ያመጣል።
2. ለrepositoryው ቦታ ይምረጡ
repositoryው በሚጠብቁት ሰርቨር ላይ መሆን የለበትም። ሁለት የተለመዱ ምርጫዎች፦
- በSFTP ሌላ ሰርቨር፦
sftp:backup@203.0.113.20:/srv/restic/web1 - S3-ተኳኋኝ የobject ማከማቻ፦
s3:https://s3.example.com/my-bucket/web1
3. የመዳረሻ መረጃዎችን ያስቀምጡ
timerኡ እና shellዎ ተመሳሳይ ቅንብሮችን እንዲጠቀሙ ሁሉንም ነገር root ብቻ በሚያነበው አንድ ፋይል ውስጥ ያስቀምጡ፦
cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass
አሁን የ/root/.restic-pass ይዘትን ወደ password managerዎ ይገልብጡ። ያለ እሱ backupዎቹ ሊፈቱ አይችሉም — በእርስዎም ሆነ በማንም።
4. ያዘጋጁና የመጀመሪያውን backup ያሂዱ
source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
--exclude-caches --exclude '/root/.cache'
restic snapshots
pathዎቹን ዳታዎ በእርግጥ ካለበት ቦታ ጋር ያስማሙ። የDocker volumes በ/var/lib/docker/volumes ስር ናቸው፤ የመተግበሪያ ዳታ ብዙውን ጊዜ በ/srv ወይም /opt ውስጥ ነው።
5. databases፦ መጀመሪያ dump፣ ከዚያ backup
የሚሰራ databaseን ጥሬ ፋይሎች backup አያድርጉ። ከbackupኡ ልክ በፊት dump ያውጡ፦
mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump
/var/backups/dbን ወደ backup pathዎቹ ይጨምሩ። የእኛ PostgreSQL መመሪያ ስለ dumps ተጨማሪ ይዟል።
6. በsystemd ያቅዱት
እዚህ timer ከcron ይሻላል፦ ወደ journal ይጽፋል፣ በተያዘለት ሰዓት ሰርቨሩ ጠፍቶ ከነበረም ያመለጠውን ሩጫ በኋላ ያካክሳል።
# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer
forget --prune 7 ዕለታዊ፣ 4 ሳምንታዊ እና 6 ወርሃዊ snapshots ያቆያል፣ የቀሩትንም ይሰርዛል። የdatabase dump ደረጃ ካለዎት በExecStartPre= መስመር ውስጥ ያስቀምጡት።
7. በእርግጥ የሆነ ነገር ይመልሱ
"backup አለን" የሚለውን ወደ እውነታ የሚቀይረው ይህ ደረጃ ነው። አንድ ማውጫን ወደ ጊዜያዊ ማውጫ ይመልሱና ይመልከቱት፦
source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check
ይህን አሁን አንድ ጊዜ ያድርጉት፣ ከዚያም በየጥቂት ወራት። restic check የrepositoryውን መዋቅር ያረጋግጣል፤ መመለሱ ደግሞ ዳታው በእርግጥ እዚያ መሆኑን ያረጋግጣል።
restic እና Managed Backups
እርስ በርሳቸው አይወዳደሩም። Managed Backups በየቀኑ የሙሉውን ሰርቨር የመመለሻ ነጥብ ይወስዳሉ፣ ከዳሽቦርዱም ይመልሱታል — ከተበላሸ ዝማኔ በኋላ ፈጣኑ መፍትሄ። ዋጋቸው በወር $2 ሲሆን በማንኛውም ዓመታዊ ፕላን ውስጥ በነፃ ይካተታሉ። restic ደግሞ በፋይል ደረጃ፣ ከሰርቨሩ ውጭ፣ እርስዎ በሚቆጣጠሩት ማከማቻ ውስጥ ቅጂዎችን ይሰጥዎታል፣ ይህም ችግሩ ባለፈው ማክሰኞ የተሰረዘ ፋይል ሲሆን፣ ወይም ከመሰረተ ልማታችን ሙሉ በሙሉ ውጭ ቅጂ ሲፈልጉ አስፈላጊ ነው።
ሚስጥራዊ ዳታ የሚያከማቹ ከሆነ ይህን ከሙሉ ዲስክ ምስጠራ ጋር ያጣምሩ፣ ወይም የራስዎን የbackup መዳረሻ ለማሄድ የተመሰጠረ ማከማቻ አጠቃቀምን ይመልከቱ። ለአብዛኞቹ ትናንሽ ሰርቨሮችና ለbackup ስራዎቻቸው የMicro ፕላን በቂ ነው።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።