Επισκόπηση
Το backup ενός φακέλου στο Google Drive θα έπρεπε να είναι diff, όχι επαναφόρτωση. Αυτό το CLI υλοποιεί σταδιακά backups με εξαιρέσεις αρχείων και φακέλων, διατηρώντας την απομακρυσμένη/τοπική δομή και παραλείποντας εντελώς τα αμετάβλητα αρχεία.
Τι έφτιαξα
Ο πυρήνας είναι ένα δέντρο FileNode στη μνήμη, χτισμένο από το τοπικό σύστημα αρχείων και αντιπαραβαλλόμενο με το Drive. Η επίλυση συγκρούσεων ανιχνεύει μετακινήσεις αντί για διαγραφή-και-επαναφόρτωση: ένα κατώφλι συχνότητας μετακίνησης 0,6 αποφασίζει αν ένας φάκελος Drive είναι ο ίδιος που μετακινήθηκε. Οι χρόνοι τροποποίησης οδηγούν την ανίχνευση αλλαγών, και τα IDs φακέλων/αρχείων αποθηκεύονται στο backupFile.json ώστε τα αμετάβλητα αρχεία να μην επαναφορτώνονται ποτέ.
Οι εξαιρέσεις είναι μοτίβα glob κλειδωμένα σε απόλυτη διαδρομή ή σε παγκόσμιο *, αποκομμένα από το δέντρο με micromatch. Τα uploads τρέχουν παράλληλα με όριο ταχύτητας, οι τύποι MIME προέρχονται από bundled αντιστοίχιση, και το CLI προσφέρει καθαρή έξοδο προόδου (cli-progress). Ένα setup.bat συνδέει τα backups στον Windows Task Scheduler σε ρυθμό ΩΡΙΑΙΑ/ΗΜΕΡΗΣΙΑ/ΕΒΔΟΜΑΔΙΑΙΑ/ΜΗΝΙΑΙΑ, και μια λειτουργία λήψης επαναφέρει την απομακρυσμένη κατάσταση.
Τεχνικά highlights
- Diffing με δέντρα και επίλυση συγκρούσεων βάσει συχνότητας μετακίνησης
- Αποκοπή εξαιρέσεων glob ανά backup ή παγκόσμια
- Αποθηκευμένα IDs και χρόνοι τροποποίησης: μηδενικές επαναφορτώσεις αμετάβλητων αρχείων
- Προγραμματισμένες εκτελέσεις και λειτουργία επαναφοράς
Αποτέλεσμα
Τρέχει χωρίς επίβλεψη σε πρόγραμμα· η λογική diffing σημαίνει ότι μόνο πραγματικές αλλαγές φτάνουν στο API.