Chorke Academia Backup: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Backup » CSV==
<syntaxhighlight lang="bash">
ssh deploy@rds.academia.chorke.org
mkdir -p ~/rds_backup/
cat  << EXE | bash
BACKUP_PRO='academia'
BACKUP_ENV='production'
BACKUP_DATE_TIME="\$(date +'%Y%m%d-T%H%M')-Z\$(date +'%z'|tr '+-' 'PM')"
cat  << SQL | psql -U postgres chorke_policy
\COPY (\
SELECT \
    status, product_name "product name", ref_code AS "policy number", properties->>'Full Name' AS "full name", \
    properties->>'Start Date' AS "effective date", properties->>'End Date' AS "expiry date" \
FROM policy WHERE status IN ('Not in Effect', 'In Effect') ORDER BY id DESC) \
TO '\${HOME}/rds_backup/chorke-policy-status_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.csv' DELIMITER ',' CSV HEADER;
SQL
EXE
mkdir -p ~/Documents/backup-playground/
cd      ~/Documents/backup-playground/
scp deploy@rds.academia.chorke.org:~/rds_backup/*.csv .
</syntaxhighlight>
==Backup » Databases==
==Backup » Databases==
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
ssh deploy@rds.academia.chorke.org
ssh deploy@rds.academia.chorke.org  
mkdir -p ~/rds_backup/
mkdir -p ~/rds_backup/


Line 9: Line 33:
BACKUP_DATE_TIME="\$(date +'%Y%m%d-T%H%M')-Z\$(date +'%z'|tr '+-' 'PM')"
BACKUP_DATE_TIME="\$(date +'%Y%m%d-T%H%M')-Z\$(date +'%z'|tr '+-' 'PM')"
for d in keycloak quote policy;do
for d in keycloak quote policy;do
     pg_dump -U postgres "academia_\${d}"\
     pg_dump -U postgres "chorke_\${d}"\
     | gzip > "${HOME}/rds_backup/chorke-\${d}_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.sql.gz";
     | gzip > "${HOME}/rds_backup/chorke-\${d}_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.sql.gz";
done
done
Line 16: Line 40:
mkdir -p ~/Documents/backup-playground/
mkdir -p ~/Documents/backup-playground/
cd      ~/Documents/backup-playground/
cd      ~/Documents/backup-playground/
scp deploy@rds.academia.chorke.org
scp deploy@rds.academia.chorke.org:~/rds_backup/*.sql.gz .
</syntaxhighlight>
</syntaxhighlight>


Line 35: Line 59:
     RELEASE_STORES=\$(dirname  "\$(readlink -f \${CURRENT_DEPLOY})")
     RELEASE_STORES=\$(dirname  "\$(readlink -f \${CURRENT_DEPLOY})")
     RELEASE_DEPLOY=\$(basename "\$(readlink -f \${CURRENT_DEPLOY})")
     RELEASE_DEPLOY=\$(basename "\$(readlink -f \${CURRENT_DEPLOY})")
 
     cd \${RELEASE_STORES};tar -czvf \${ARCHIVE_TARGET} \${RELEASE_DEPLOY}
    # exclude unnecessary files and compress
    printf -v ARCHIVE_EXCLUDE '%s=%s/node_modules' '--exclude' \${RELEASE_DEPLOY}
     cd \${RELEASE_STORES};tar \${ARCHIVE_EXCLUDE} -czvf \${ARCHIVE_TARGET} \${RELEASE_DEPLOY}
done
done


Line 105: Line 126:
'
'
</syntaxhighlight>
</syntaxhighlight>
==Playground==
{|
| valign="top" |
<syntaxhighlight lang="bash">
  scp -r  deploy@app.academia.chorke.org:~/Documents/docker-playground/ .
rsync -avz deploy@app.academia.chorke.org:~/Documents/docker-playground/ .
</syntaxhighlight>
| valign="top" |
| valign="top" |
|-
| colspan="3" |
----
|-
| valign="top" |
| valign="top" |
| valign="top" |
|}


==References==
==References==
Line 134: Line 179:


| valign="top" |
| valign="top" |
* [https://docs.rackspace.com/docs/copy-files-with-scp-and-rsync Linux » Upload & Synchronize Files]
* [[Google Cloud CLI]]
* [[Google Cloud CLI]]
* [[AWS CLI]]
* [[AWS CLI]]

Latest revision as of 12:18, 12 July 2024

Backup » CSV

ssh deploy@rds.academia.chorke.org
mkdir -p ~/rds_backup/

cat  << EXE | bash
BACKUP_PRO='academia'
BACKUP_ENV='production'
BACKUP_DATE_TIME="\$(date +'%Y%m%d-T%H%M')-Z\$(date +'%z'|tr '+-' 'PM')"
cat  << SQL | psql -U postgres chorke_policy
\COPY (\
SELECT \
    status, product_name "product name", ref_code AS "policy number", properties->>'Full Name' AS "full name", \
    properties->>'Start Date' AS "effective date", properties->>'End Date' AS "expiry date" \
FROM policy WHERE status IN ('Not in Effect', 'In Effect') ORDER BY id DESC) \
TO '\${HOME}/rds_backup/chorke-policy-status_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.csv' DELIMITER ',' CSV HEADER;
SQL
EXE

mkdir -p ~/Documents/backup-playground/
cd       ~/Documents/backup-playground/
scp deploy@rds.academia.chorke.org:~/rds_backup/*.csv .

Backup » Databases

ssh deploy@rds.academia.chorke.org 
mkdir -p ~/rds_backup/

cat  << EXE | bash
BACKUP_PRO='academia'
BACKUP_ENV='production'
BACKUP_DATE_TIME="\$(date +'%Y%m%d-T%H%M')-Z\$(date +'%z'|tr '+-' 'PM')"
for d in keycloak quote policy;do
    pg_dump -U postgres "chorke_\${d}"\
     | gzip > "${HOME}/rds_backup/chorke-\${d}_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.sql.gz";
done
EXE

mkdir -p ~/Documents/backup-playground/
cd       ~/Documents/backup-playground/
scp deploy@rds.academia.chorke.org:~/rds_backup/*.sql.gz .

Backup » Services

ssh deploy@app.academia.chorke.org
mkdir -p ~/app_backup/

cat  << EXE | bash
BACKUP_PRO='academia'
BACKUP_ENV='production'
BACKUP_DATE_TIME="\$(date +'%Y%m%d-T%H%M')-Z\$(date +'%z'|tr '+-' 'PM')"

# backup unsymmetrical
for d in keycloak;do
    ARCHIVE_TARGET=\${HOME}/app_backup/\${d}_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.tar.gz
    CURRENT_DEPLOY=/var/chorke/academia/\${d}/\${BACKUP_ENV}-\${BACKUP_PRO}/current
    RELEASE_STORES=\$(dirname  "\$(readlink -f \${CURRENT_DEPLOY})")
    RELEASE_DEPLOY=\$(basename "\$(readlink -f \${CURRENT_DEPLOY})")
    cd \${RELEASE_STORES};tar -czvf \${ARCHIVE_TARGET} \${RELEASE_DEPLOY}
done

# backup symmetrical
for d in product quote policy portal d2c verify;do
    ARCHIVE_TARGET=\${HOME}/app_backup/chorke-\${d}_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.tar.gz
    CURRENT_DEPLOY=/var/chorke/academia/chorke-\${d}/\${BACKUP_ENV}-\${BACKUP_PRO}/current
    RELEASE_STORES=\$(dirname  "\$(readlink -f \${CURRENT_DEPLOY})")
    RELEASE_DEPLOY=\$(basename "\$(readlink -f \${CURRENT_DEPLOY})")

    # exclude unnecessary files and compress
    printf -v ARCHIVE_EXCLUDE '%s=%s/node_modules' '--exclude' \${RELEASE_DEPLOY}
    cd \${RELEASE_STORES};tar \${ARCHIVE_EXCLUDE} -czvf \${ARCHIVE_TARGET} \${RELEASE_DEPLOY}
done

# backup certificates
ARCHIVE_TARGET=\${HOME}/app_backup/chorke-certificates_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.tar.gz
cd /var/chorke/academia/chorke-policy/\${BACKUP_ENV}-\${BACKUP_PRO}
tar -czvf \${ARCHIVE_TARGET} certificates

# backup nginx
ARCHIVE_TARGET=\${HOME}/app_backup/chorke-nginx_\${BACKUP_PRO}-\${BACKUP_ENV}-\${BACKUP_DATE_TIME}.tar.gz
cd /etc/nginx;tar -czvf \${ARCHIVE_TARGET} sites-enabled
EXE

mkdir -p ~/Documents/backup-playground/
cd       ~/Documents/backup-playground/
scp deploy@app.academia.chorke.org:~/app_backup/*.tar.gz .

Backup » Upload

AWS » S3 » Buckets » projects » backups » chorke » academia » production » 20240628-T2023-ZP0800
AWS » S3 » Buckets » projects » backups » chorke » academia » release    » 20240628-T2023-ZP0800
AWS » S3 » Buckets » projects » backups » chorke » academia » develop    » 20240628-T2023-ZP0800

Backup » Extract

tar -tzvf chorke-nginx_academia-production-20240628-T2023-ZP0800.tar.gz
tar -xzvf chorke-nginx_academia-production-20240628-T2023-ZP0800.tar.gz

tar -xzvf chorke-nginx_academia-production-20240628-T2023-ZP0800.tar.gz\
 -C chorke-nginx-academia-production

DateTime » Format

echo "$(date +'%Y%m%d-T%H%M')-Z$(date +'%z'|tr '+-' 'PM')"
:'
20240628-T2023-ZP0800
├─ 20240628
│  ├─ 2024 « %Y
│  ├─ 06   « m%
│  └─ 28   « %d
├─ -T2023
│  ├─ -    « -
│  ├─ T    « Time
│  ├─ 20   « %H
│  └─ 23   « %M
└─ -ZP0800
   ├─ -    « -
   ├─ Z    « Zone
   ├─ P    « {P: Plus (+), M:Minus (-)}
   └─ 0800 « Time Offset
'

Playground

  scp -r   deploy@app.academia.chorke.org:~/Documents/docker-playground/ .
rsync -avz deploy@app.academia.chorke.org:~/Documents/docker-playground/ .

References