- Przełącz się na roota: sudo su
- Pobierz aplikację gdrive wybierając odpowiednią dystrybucję (w większośći linux-386, maliny linux-rpi), nadaj jej prawa wykonania i przenieś ją do /usr/bin. Przykładowo:
Kod: Zaznacz cały
wget -O gdrive https://docs.google.com/uc?id=0B3X9GlR6EmbnLV92dHBpTkFhTEU&export=download chmod +x gdrive mv gdrive /usr/bin
- Wróć do swojego użytkownika, który jest w grupie docker i wykonaj tam komendę Pokaże się link, który należy skopiować do przeglądraki i uzyskać access code. Należy go podać w konsoli. Po tym działaniu komenda gdrive about powinna pokazywać Twoje konto na Google Drive i quotę a gdrive list - listę plików.
Kod: Zaznacz cały
gdrive about
- Stwórz nieudostępniony katalog na swoim Google Drive do którego będą przesyłane backupy bazy. Po wejściu do niego w przeglądarce pokaże się adres postaciInteresuje nas identyfikator katalogu - ostania część adresu URL, czyli w powyższym przypadku
Kod: Zaznacz cały
https://drive.google.com/drive/u/0/folders/0B0OnuB36CtoeknVRX2xRbS1sT1E
.Kod: Zaznacz cały
0B0OnuB36CtoeknVRX2xRbS1sT1E
- Utwórz skrypt backupujący, np. w katalogu domowym: https://gist.github.com/fracz/3c58c9981 ... 2315a12014 Dostosuj zmienne na początku skryptu tak by zawierały prawdziwe informacje.
- Nadaj prawa wykonania do skryptu i spróbuj czy wszystko działa:
Kod: Zaznacz cały
chmod +x backup.sh ./backup.sh
- Dodaj do crontaba automatyczne wykonywanie skryptu backupującego. Poniższa konfiguracja wykonuje backup co 2 godziny. Stare backupy są usuwane po liczbie dni skonfigurowanej w skrypcie.
Kod: Zaznacz cały
0 */2 * * * /home/unicorn/backup.sh > /home/unicorn/backup.log 2>&1
Automatyczny backup danych na Google Drive
Moderator: fracz
Witam
Mój problem jest taki, że stare backupy nie są usuwane. Coś pomieszałem?
Pozdrawiam
i mam tak:
Mój problem jest taki, że stare backupy nie są usuwane. Coś pomieszałem?
Pozdrawiam
Kod: Zaznacz cały
#!/usr/bin/env bash
# Sample crontab: 0 */2 * * * /home/unicorn/backup.sh > /home/unicorn/backup.log 2>&1
NOW=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE=supla-$NOW.sql
GDRIVE_DIR=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SUPLA_PATH=/home/pi/supla-docker
BACKUP_EXPIRATION_DAYS=2
cd "$(dirname "$0")"
source $SUPLA_PATH/.env && \
docker exec supla-db mysqldump -u root --password="$DB_PASSWORD" supla > $BACKUP_FILE && \
gzip $BACKUP_FILE && \
gdrive upload $BACKUP_FILE.gz --parent $GDRIVE_DIR --delete
sleep 5
OLD_BACKUPS=$(date -u -d "${BACKUP_EXPIRATION_DAYS} days ago" +"%Y-%m-%dT%H:%M:%SZ")
OBSOLETE_BACKUPS=$(gdrive list -m 1000 --query \
"(('${GDRIVE_DIR}' in parents) and trashed=false and modifiedTime < '$OLD_BACKUPS'" \
--order "modifiedTime asc" --no-header | cut -d ' ' -f1)
while read -r OBSOLETE_BACKUP_ID; do
if [ ! -z "$OBSOLETE_BACKUP_ID" ]; then
echo Deleting $OBSOLETE_BACKUP_ID
gdrive delete $OBSOLETE_BACKUP_ID
fi
done <<< "$OBSOLETE_BACKUPS"
Kod: Zaznacz cały
pi@SUPLA-SERWER:~ $ ./backup.sh
Uploading supla-20220327202839.sql.gz
Uploaded xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx at 3.3 MB/s, total 4.1 MB
Removed supla-20220327202839.sql.gz
Deleting Failed
Failed to get file: googleapi: Error 404: File not found: Failed., notFound
pi@SUPLA-SERWER:~ $