Python skript na porovnanie lokálnych súborov s Google Drive. Optimalizovaný pre veľké objemy dát (aj terabajty).
- 🔍 Porovnanie lokálnych súborov s Google Drive
- ⚡ Optimalizované pre veľké objemy dát
- 💾 Cache systém pre rýchlejšie opakované spustenia
- 📊 Detailné reporty v JSON formáte
- 🎯 Kontrola prítomnosti súborov v oboch úložiskách
- ⚖️ Kontrola veľkosti súborov
- 📈 Progress bar pre sledovanie priebehu
- Python 3.7+
- Google Cloud Project s povoleným Google Drive API
- Prístup k internetu
cd google-drive-backup-checkerpython3 -m venv venv
source venv/bin/activate # Linux/Mac
# alebo
venv\Scripts\activate # Windowspip install -r requirements.txt- Prejdite na Google Cloud Console
- Vytvorte nový projekt alebo vyberte existujúci
- Povoľte Google Drive API:
- V navigácii prejdite na "APIs & Services" > "Library"
- Vyhľadajte "Google Drive API"
- Kliknite na "Enable"
- V navigácii prejdite na "APIs & Services" > "Credentials"
- Kliknite na "Create Credentials" > "OAuth client ID"
- Ak je potrebné, nakonfigurujte "OAuth consent screen":
- Vyberte "External" (alebo "Internal" ak máte Google Workspace)
- Vyplňte potrebné informácie
- Pridajte scope:
.../auth/drive.readonly - Pridajte testovacích používateľov (ak je External)
- Vytvorte OAuth client ID:
- Application type: Desktop app
- Dajte mu názov (napr. "Drive Backup Checker")
- Stiahnite JSON súbor s credentials
- Premenujte ho na
credentials.jsona umiestnite ho do tohto adresára
python drive_backup_checker.py /cesta/k/lokalnym/suborom# Porovnať adresár /home/user/documents
python drive_backup_checker.py /home/user/documents
# Vynútiť nové skenovanie bez použitia cache
python drive_backup_checker.py /home/user/documents --no-cache
# Vymazať cache pred spustením
python drive_backup_checker.py /home/user/documents --clear-cache
# Vlastný názov výstupného súboru
python drive_backup_checker.py /home/user/documents --output moja-sprava.json
# Ignorovať špecifické súbory
python drive_backup_checker.py /home/user/documents --ignore "*.tmp" "~*"
# Bez ignorovania predvolených súborov (Thumbs.db, desktop.ini, .DS_Store)
python drive_backup_checker.py /home/user/documents --ignorelocal_path- Povinný. Cesta k lokálnemu adresáru na porovnanie--no-cache- Vynútiť nové skenovanie bez použitia cache--clear-cache- Vymazať cache pred spustením--drive-folder ID- ID špecifického priečinka na Google Drive (voliteľné)--output FILENAME- Názov výstupného JSON súboru (default:report.json)--ignore [PATTERNS...]- Ignorované súbory (podporuje wildcards). Predvolené:Thumbs.db,desktop.ini,.DS_Store
Ak chcete porovnať len konkrétny priečinok na Drive (nie celý Drive), potrebujete jeho ID:
- Otvorte Google Drive v prehliadači
- Otvorte priečinok, ktorý chcete porovnať
- Pozrite sa na URL v adresnom riadku:
https://drive.google.com/drive/folders/1XyZ_aBcDeFgHiJkLmNoPqRsTuVwXyZ123
└────────────────────────────┘
Toto je ID priečinka!
- Skopírujte dlhý reťazec za
/folders/
# Porovnať lokálny adresár so špecifickým priečinkom na Drive
python drive_backup_checker.py /home/user/documents \
--drive-folder 1XyZ_aBcDeFgHiJkLmNoPqRsTuVwXyZ123
# Príklad pre priečinok "Zálohy 2024"
python drive_backup_checker.py /mnt/e/Backup \
--drive-folder 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6pPoznámka:
- Bez
--drive-folder→ porovná s celým "My Drive" - S
--drive-folder ID→ porovná len s obsahom zadaného priečinka (vrátane podpriečinkov)
Skript automaticky ignoruje systémové súbory, ktoré často spôsobujú "false positives":
Thumbs.db(Windows thumbnail cache)desktop.ini(Windows folder settings).DS_Store(macOS folder metadata)
# Pridajte vlastné súbory na ignorovanie (prepíše predvolené)
python drive_backup_checker.py /home/user/documents \
--ignore "Thumbs.db" "desktop.ini" "*.tmp" "~*" ".~lock.*"
# Ignorovať len určité patterny
python drive_backup_checker.py /home/user/documents \
--ignore "*.bak" "*.swp"
# Bez ignorovania (vypne predvolené)
python drive_backup_checker.py /home/user/documents --ignore*.tmp- všetky súbory s príponou .tmp~*- všetky súbory začínajúce na ~.~lock.*- LibreOffice lock súboryThumbs.db- presný názov súboru
Pri prvom spustení:
- Otvorí sa webový prehliadač
- Prihláste sa do Google účtu
- Povolte prístup k Drive (read-only)
- Po úspešnej autentifikácii sa vytvorí
token.picklev.cache/adresári - Pri ďalších spusteniach už nebude potrebné znovu sa prihlasovať
Skript vytvorí:
VÝSLEDKY POROVNANIA
====================================================================
📊 ŠTATISTIKA:
Lokálne súbory: 1,523
Drive súbory: 1,489
V oboch: 1,450
⚠️ ROZDIELY:
Iba lokálne: 73
Iba na Drive: 39
Rozdiel veľkosti: 12
📁 SÚBORY IBA LOKÁLNE (prvých 20):
- documents/new_file.pdf
- photos/2024/IMG_5678.jpg
...
Detailná správa v .cache/report.json:
{
"timestamp": "2024-10-30T10:30:00",
"local_root": "/home/user/documents",
"statistics": {
"total_local": 1523,
"total_drive": 1489,
"in_both": 1450,
"only_local": 73,
"only_drive": 39,
"size_mismatch": 12
},
"details": {
"only_local": [...],
"only_drive": [...],
"size_mismatch": [...]
}
}Skript je optimalizovaný pre veľké objemy dát:
- Cache systém: Ukladá výsledky skenovania, aby nebolo potrebné skenova znovu
- Paginácia: Google Drive API volania používajú maximálnu veľkosť stránky (1000)
- Efektívne dátové štruktúry: Používa sets a dictionaries pre rýchle porovnávanie
- Progress bary: Vizuálna indikácia priebehu pomocou
tqdm - Lazy loading: Spracováva súbory postupne, nie všetky naraz v pamäti
google-drive-backup-checker/
├── drive_backup_checker.py # Hlavný skript
├── requirements.txt # Python závislosti
├── config.example.py # Príklad konfigurácie
├── credentials.json # Google API credentials (pridáte vy)
├── .gitignore # Git ignore pravidlá
├── README.md # Tento súbor
└── .cache/ # Automaticky vytvorený
├── token.pickle # Autentifikačný token
├── local_files_cache.json # Cache lokálnych súborov
├── drive_files_cache_root.json # Cache Drive súborov (celý Drive)
├── drive_files_cache_ID.json # Cache pre konkrétny priečinok
└── report.json # Výsledný report
- Skript požaduje iba read-only prístup k Drive (
drive.readonlyscope) credentials.jsonatoken.pickleobsahujú citlivé dáta - nikdy ich necommitujte do git- Pridajte do
.gitignore:credentials.json .cache/ venv/
Potrebujete vytvoriť OAuth credentials v Google Cloud Console a stiahnuť JSON súbor.
Uistite sa, že OAuth consent screen má správne nastavené scopes a ste pridaný ako testovací používateľ.
- Pri prvom spustení je normálne, že trvá dlhšie (skenuje všetky súbory)
- Pri ďalších spusteniach použije cache (výrazne rýchlejšie)
- Pre nové skenovanie použite
--clear-cache
Vymažte token.pickle a znovu sa prihláste:
rm .cache/token.pickle
python drive_backup_checker.py /cesta/k/adresaruMožné rozšírenia v budúcich verziách:
- ✅ Kontrola prítomnosti súborov (implementované)
- ✅ Kontrola veľkosti súborov (implementované)
- ⬜ Kontrola hash/checksum súborov (MD5)
- ⬜ Paralelné skenovanie lokálnych súborov
- ⬜ Automatická synchronizácia chýbajúcich súborov
- ⬜ Web UI dashboard
- ⬜ Plánovanie pravidelných kontrol (cron job)
- ⬜ E-mail notifikácie pri rozdieloch
MIT License - voľne použiteľné
Vytvorené pre efektívnu správu záloh medzi lokálnym úložiskom a Google Drive.